我需要一个正则表达式来找到所有出现(可能是多个)的标签的文本:“Graphicsource”,并将其转换为带有src属性的img标记,该属性包含hrefurl。
所以从
<small><a href="https://www.url.com/image.png" target="_blank" rel="noopener">Graphic source</a></small>
到
<img src="https://www.url.com/image.png"/>
例如:
Some text
Other tag <b>test</b>
<small><a href="https://www.url.com/name1.png" target="_blank" rel="noopener">Graphic source</a></small>test
<small><a href="https://www.url.com/name2.jpg" target="_blank" rel="noopener">Graphic source</a></small>Text text<small><a href="www.url.com">Do not transform</a></small>
需要转换为:
Some text
Other tag <b>test</b>
<img src="https://www.url.com/name1.png"/>test
<img src="https://www.url.com/name2.jpg"/>Text text<small><a href="www.url.com">Do not transform</a></small>
我几乎让它工作:<small.*?href="(.*?)"
我不明白如何不包括一个标签,不包含文字图形来源作为文本,以及如何不包括所有其他属性的一个标签时,转换为img标签。
https://regex101.com/r/OReOCd/1
4条答案
按热度按时间yhived7q1#
不要使用
regex
解析HTML/XML
检查:
最好使用编程语言和适当的库来解析
HTML
。使用最常用的语言之一Python:
或者PHP,使用
DOMXPath
:输出
d5vmydt92#
“.我需要一个正则表达式来找到所有的事件.将[them]转换为带有src属性的img标签,该属性包含href url。...”
正则表达式模式本身不会替换任何值,它只是匹配。
您需要使用程序或编程语言。
声明
>
后面的文本为 “Graphic source<"替换文本将是,
此外,我假设您可以在文本之前和之后使用
\s*
。在这种类型的情况下,有重复的键和值,您可以使用 lazy-quantifier
?
来匹配第一个遇到的引号。比如说,
下面是一个示例输出
4szc88ey3#
强制性免责声明:Stop Parsing (X)HTML with Regular Expression
https://regex101.com/r/2Wd9le/1
yjghlzjz4#
这应该做的工作:
对于您的替代品,您可以执行以下操作: