我有这个字符串:
goose goose goose random goose goose test goose goose goose
我在 TextMate 中使用正则表达式来查找任何不是goose
. 因此random
和 的单词test
。
所以我尝试了这个正则表达式:
[^\sgoose\s]
但这并没有完全满足我的要求。它匹配任何不是 aspace
或 字母 的字符g
o
s
e
。
我如何才能找到正则表达式来匹配任何不完整的单词goose
?因此,应该有 2 个匹配项random
和test
。
答案1
不确定它是否适用于 TextMate(我没有它,但我已经用 Notepad++ 测试过)。
您可以尝试:
\b(?:(?!goose)\w)+\b
解释:
\b : word boundary
(?: : start non capture group
(?!goose) : negative lookahead, make sure we don't have the word "goose"
\w : a word character, you may use "[a-zA-Z]" for letters only or "." for any character but newline
)+ : group may appears 1 or more times
\b : word boundary
答案2
我发现这个表达有错误,你可以在这里检查:https://regex101.com/r/XQhqAB/1
如您所见,上面的表达式\b(?:(?!goose)\w)+\b
找不到:gooses1
,goose1
以及所有以前缀开头的单词goose
。显然这些是其他单词...
正确表达(针对扩展词):(?<=^|\s)(?!goose(?:\s|$))\S+(?=\s|$)
你在这里测试一下:https://regex101.com/r/XQhqAB/4
正确表达(针对简单的单词):\b(?!goose\b)\w+\b
测试一下:https://regex101.com/r/XQhqAB/5
真挚地。