regex 正则表达式中有不等于而不是不包含吗?[副本]

bmvo0sr5  于 12个月前  发布在  其他
关注(0)|答案(1)|浏览(99)

此问题已在此处有答案

Matching all words except one(8个回答)
A regular expression to exclude a word/string(8个回答)
Need to find a regular expression for any word except word1 or word2(4个回答)
上个月关门了。
这里有一个简单的正则表达式:

([a-zA-Z_0-9]+)

然而,我希望它不捕获它,如果它等于一个特定的词,所以我找到了一个像这样的解决方案,它不应该包含这个:

([a-zA-Z_0-9]+)?\b(?<!this)

回想起来这很好,但是如果我有一个例子,我有一个像this_that的词,它不会捕获它,因为this在那个词里面,但是,我希望它捕获它,除非它完全等于this,没有别的,有意义吗?
我做了一些研究,我找不到一个非操作符在正则表达式,只是消极的前瞻性。有人有什么想法吗?
很多东西,如上所述。

xytpbqjk

xytpbqjk1#

如果你想捕获单词,除非单词是this,你可以这样做:

\bthis\b|(\w+)  # or [a-zA-Z_0-9]+ for ASCII only

Demo
或者,您可以执行以下操作:

\b(?!this\b)\w+ # or [a-zA-Z_0-9]+ for ASCII only

Demo
顺便说一句:[a-zA-Z_0-9]与PCRE、Ruby、Java、ECMA和其他re风格中的\w相同,其中\w是许多计算机语言中法律的变量名的快捷方式。

  • 但是 * \w在Python、Rust、C#和其他使用Unicode意义的字母中匹配àbç

相关问题