正则表达式 - 防止将字符串与同一行上的子字符串进行匹配

时间:2016-02-19 15:56:19

标签: regex

我的代码(不起作用)

(?!setFeature)[^\n]*"(?:http|ftp):\/\/[\w\d]

因此,我希望阻止setFeature("http://xyz")的匹配,但允许匹配其他任何内容,例如setUrl("http://xyz")。谢谢!

2 个答案:

答案 0 :(得分:1)

改变你的前瞻,将它锚定起来,让它在任何地方匹配:

^(?!.*setFeature)[^\n]*"(?:http|ftp):\/\/[\w\d]

答案 1 :(得分:1)

问题是你的[^ \ n] *匹配" etFeature"因为这在技术上符合您的标准。您需要添加单词边界以指示它必须是单词的开头或字符串的开头,所以:

\b(?!setFeature)\w+[^\n]*"(?:http|ftp):\/\/[\w\d]

您可以看到a live test here