Regex ReEX确保模式中不出现特定单词
我有一个正则表达式,它匹配列表中的一系列字符,但我想阻止它匹配单词 我的正则表达式是:Regex ReEX确保模式中不出现特定单词,regex,Regex,我有一个正则表达式,它匹配列表中的一系列字符,但我想阻止它匹配单词 我的正则表达式是: ^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$ 我希望它能像这样匹配: widget/JQYHHU-查看小部件,应匹配 widget/jqyhu/-查看小部件,应匹配 widget/jqyhu/bag of screws-查看widget,应匹配 widget/jqyhu/bag of screws/-查看widget,应匹配 widget/add-查看小部件,应不匹配 小部件/a
^widget/([\w\d~]+)/?(?:[\w\d~]+)/?$
我希望它能像这样匹配:
-查看小部件,应匹配widget/JQYHHU
-查看小部件,应匹配widget/jqyhu/
-查看widget,应匹配widget/jqyhu/bag of screws
-查看widget,应匹配widget/jqyhu/bag of screws/
-查看小部件,应不匹配widget/add
-查看小部件,应不匹配小部件/add/
^widget/(?!add)([\w\d~]+)/?(?:[\w\d~]+)/?$
这是一个零宽度的负前瞻断言;基本上,它说“站在我现在所在的位置,确保如果我向前看,我不会看到模式add
,但完成后不要移动光标位置。”
请在此阅读:除了add,还有其他不想匹配的词吗?您需要将破折号添加到character类中,然后正则表达式也可以这样简化:
^widget/(?!add)(?:([\w\d~-]+)/?)+$
谢谢您的参考。这个术语有时很难记住。