我在修改没有/>结束标记的特定XHTML标记(在此示例中为IMG标记)中进行REGEX查找/替换时遇到问题.
考虑这两行示例文本:
仅当我包含a-z
在捕获组#3的否定字符类中时,以下REGEX才能正常工作:
()
替换字符串:
$1$2$3/$4
我必须a-z
在字符类中包含BECAUSE,如果我不这样做,那么在示例文本的第1行中,REGEX继续经过正确关闭的IMG标记并找到DIV标记的结束标记.我已经绕过圈子试验前瞻/后方等等,但是无法想出更好的东西.
虽然我有一个可行的解决方案,但我很想知道是否有一种更优雅的方式来做这个a-z
在否定的字符类中不需要的方法.
这对于正则表达式来说实际上非常简单.像空的标签img
实际上是非常规则的.
假设在img
和之间至少有一个字符>
,这个正则表达式将起作用:
(]*[^\/])>
基本上,它捕获,然后一切,直到最后一个字符
>
.如果该字符不是/
,您将获得匹配,并可以使用替换字符串:$1/>
.
(如果没有匹配,那么您的标签已经正确关闭.)