我有一个正则表达式从HTML字体标记中提取文本:
<FONT FACE=\"Excelsior LT Std Bold\"(.*)>(.*)</FONT>
Run Code Online (Sandbox Code Playgroud)
这个工作正常,直到我有一些嵌套的字体标签.而不是匹配
<FONT FACE="Excelsior LT Std Bold">Fett</FONT>
Run Code Online (Sandbox Code Playgroud)
字符串的结果
<FONT FACE="Excelsior LT Std Bold">Fett</FONT> + <U>Unterstrichen</U> + <FONT FACE="Excelsior LT Std Italic">Kursiv</FONT> und Normal
Run Code Online (Sandbox Code Playgroud)
是
<FONT FACE="Excelsior LT Std Bold">Fett</FONT> + <U>Unterstrichen</U> + <FONT FACE="Excelsior LT Std Italic"
Run Code Online (Sandbox Code Playgroud)
我如何只获得第一个标签?
Dan*_*ner 10
你需要取消贪婪的匹配.*?而不是.*.
<FONT FACE=\"Excelsior LT Std Bold\"([^>]*)>(.*?)</FONT>
Run Code Online (Sandbox Code Playgroud)
请注意,如果在标记BadAttribute="<FooBar>"的FACE属性之后存在某个属性,则此操作将失败<FONT>.这将混合两个匹配组,如果属性包含,它可能会完全混乱</FONT>.没有办法解决这个问题,因为正则表达式无法计算匹配的标签或引号.所以我绝对同意Tomalak - 尽量避免使用正则表达式来处理XML,HTML和其他类似的标记语言.