我如何匹配& in和url完全没有使用正则表达式搞乱xml实体

时间:2014-09-01 11:27:56

标签: html regex

我只想匹配&在网址中,而不是像& amp;& lt;这样的xml实体;等

<a href="/test/test2">Contact Us</a>
<a href="http://www.testassociation.com/test.html?ab=5&cd=5&ab=c" target="_blank">Customer Association</a>&amp;

http://www.testassociation.com/test.html?ab=5&cd=5&ab=c

我想将&替换为&amp;,但不要打扰其他实体。

抱歉,我不知道该怎么做。

我试过了:

(&)([a-z][^;]*)

有没有更好的方法。

2 个答案:

答案 0 :(得分:1)

(?!&amp|&lt)&

你可以使用这样的东西。你必须列出你想要错过的所有和放大器。我列出了两个。

参见演示。

http://regex101.com/r/tA9uG5/1

修改

&(?=\w\w=)

如果您不想列出所有内容,请使用此项。

答案 1 :(得分:1)

完全准确的唯一方法就像@vks所说的包括所有实体列表。

您可以在维基百科中找到此列表:https://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

如果你不需要如此准确,并拥有最长的实体和基准; 8个字符可以使用负向前瞻:

(?!&\w{1,8};)&

Demo

请记住,你也会错过任何表格&amp; dffa;即使它不是有效的实体