我正在尝试清理HTML标记,例如转
<input type="image" name="name" src="image.png">
进入正确的空元素形式
<input type="image" name="name" src="image.png" />
最后带有斜杠。
我正在使用Eclipse的Find / Replace和正则表达式:
查找: &lt;(输入。*)[^ /]&gt;
替换为: &lt; \ 1 /&gt;
但我最终还是
<input type="image" name="name" src="image.png />
即。缺少最后一句话。
这是我的正则表达式中的错误,还是Eclipse中的错误?
答案 0 :(得分:1)
术语[^/]
正在消耗报价。将其移动到捕获的组中:
Find: <(input .*[^/])>
Replace: <\1 />
答案 1 :(得分:1)
错误在你的正则表达式中。最后的[^/]
会捕获最后一个非>
字符。 \1
代表第一个捕获组,即(input.*)
。简而言之,除了最后一个字符外,您将获得标记内的所有内容。如果您将[^\]
放入群组中,则替换应该有效。
此外,如果您的某个属性值中包含 出于性能原因,我建议您使用以下正则表达式:/
,则可能会遇到问题。
<(input [^/]*(/[^/]*)*)>
在这种情况下,如果您的某个属性中包含/
,则不必回溯。你的正则表达式应该捕获你需要的一切。