我想匹配以&amp;开头的所有内容结束于;但是,如果且仅当字符串为<
所以我已经完成了这个&(.+?)[^lt];
,但问题是忽略了&foolt;
我在这里做错了什么?
这是我的测试用例:
&asdas;
&asdasdqwe;
<asd;
<
&asdasdlt;
&foolt;
我期待的只有第四个被忽略。我使用http://www.regexr.com/
测试它答案 0 :(得分:2)
你的正则表达式使用的是否定的字符类[^lt]
,这意味着“不是l
而不是t
,恰好是1次出现”。
以下是符合您需要的正则表达式:
(?!^<$)&(\S+);
Demo就在这里。
(?!^<$)
确保整个字符串/行不是<
答案 1 :(得分:1)
拆开你的正则表达式&(.+?)[^lt];
:
&
&符号(.+?)
然后是一个或多个角色(不情愿地)。[^lt]
然后是一个角色,除了'l'或't'。;
然后是分号哪个不太对。你可以查看'lt;'在&符号后面加lookahead,如:
&(?!lt;).+?;
&
&符号(?!lt;)
请确保我们与此职位lt;
不匹配.+?
然后是一个或多个角色(不情愿地)。;
然后是分号