我只想匹配&在网址中,而不是像& 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>&
http://www.testassociation.com/test.html?ab=5&cd=5&ab=c
我想将&
替换为&
,但不要打扰其他实体。
抱歉,我不知道该怎么做。
我试过了:
(&)([a-z][^;]*)
有没有更好的方法。
答案 0 :(得分:1)
(?!&|<)&
你可以使用这样的东西。你必须列出你想要错过的所有和放大器。我列出了两个。
参见演示。
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};)&
请记住,你也会错过任何表格&amp; dffa;即使它不是有效的实体