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