在OR类中使用Regex Anchor?

时间:2014-03-26 22:14:29

标签: regex

让我们说我在逗号分隔列表中寻找单词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,因为它不匹配行的开头或行的结尾。有没有办法将开始和结束锚点添加到[,]字符类中以便将它们包括在内?

3 个答案:

答案 0 :(得分:2)

你还没有说明你正在使用什么样的正则表达式引擎,因此无法明确回答;但许多引擎支持用于交替的符号foo|bar和用于分组的符号(foo),因此您很可能会写:

(^|,)test(,|$)

答案 1 :(得分:0)

如果你没有 使用or-clause,并且假设每个组中只有一个单词,则可以选择

\btest\b

答案 2 :(得分:0)

ruakh的答案直接解决了你的问题,但更简单的解决方案是使用单词边界而不是寻找锚点和逗号:

\btest\b