让我们说我在逗号分隔列表中寻找单词test
。单词test
可以位于字符串的开头,字符串的中间或字符串的末尾。假设我有一系列行,包括以下内容:
this,test,should,match
test,should,match
should,match,test
this,ttest,should,not,match
请注意,第4行包含ttest
而不是test
,我不希望它匹配。有没有一个正则表达式可以匹配前三行,但不是第四行?我从它开始:
[,]test[,]
当然,这将匹配第1行,而不是4,但不匹配2和3,因为它不匹配行的开头或行的结尾。有没有办法将开始和结束锚点添加到[,]
字符类中以便将它们包括在内?
答案 0 :(得分:2)
你还没有说明你正在使用什么样的正则表达式引擎,因此无法明确回答;但许多引擎支持用于交替的符号foo|bar
和用于分组的符号(foo)
,因此您很可能会写:
(^|,)test(,|$)
答案 1 :(得分:0)
如果你没有 使用or-clause,并且假设每个组中只有一个单词,则可以选择
\btest\b
答案 2 :(得分:0)
ruakh的答案直接解决了你的问题,但更简单的解决方案是使用单词边界而不是寻找锚点和逗号:
\btest\b