【发布时间】:2020-06-09 22:03:28
【问题描述】:
我想编写一个规则(在 Webpack 中使用),它应该匹配一个不包含子字符串 xeditor 并以 .css 结尾的字符串。如果子字符串xeditor 出现在字符串中的任何位置,则应将其丢弃(即不匹配)。
到目前为止,我想出了:
(?!.*xeditor.).*css?$
我在https://www.regextester.com/ 中测试过,但它仍然匹配这样的字符串:
globalsite/xeditor/styles.css
它表明globalsite/x 之后的所有内容,即editor/styles.css 都是匹配的。因为它在字符串中包含xeditor,所以我不希望它匹配。
我该怎么做?
【问题讨论】:
-
^(?!.*xeditor).*\.css$ -
@WiktorStribiżew 不是
^唯一的测试以开头吗? -
这是你需要的,在开始时锚定前瞻检查。
-
@WiktorStribiżew 效果很好!它不是一个答案,所以我不能这样标记它
-
卷。 1,如果还没有说清楚,
(?!.*xeditor)使正则表达式引擎从字符串的开头向前移动,一次一个字符,直到满足负前瞻,这在globalsite/xeditor/styles.css中是当内部正则表达式字符串指针在'x'和'e'之间。然后尝试从该位置开始匹配.*css?$。在开头添加锚点^将断言固定到字符串的开头,导致负前瞻,从而导致正则表达式失败。另请注意,css?仅将最后一个's'设为可选。
标签: regex webpack regex-negation