正则表达式以特定单词结尾

时间:2017-10-25 20:58:03

标签: regex

我有以下正则表达式沙箱

https://regex101.com/r/5rcScT/4

当我使用\w*-[Ff]iltered\b时,它会获得我不想要的fff-filtered-qqnope-Filtered-ok。我只希望单词以-filtered结尾。例如this-filteredwow-Filtered

我在这里缺少什么?

3 个答案:

答案 0 :(得分:2)

您可以使用空白边界(?!\S)

\w*-[Ff]iltered(?!\S)

请参阅regex demo

要确保在连字符前至少匹配1个字词字符,请将*替换为+

\w+-[Ff]iltered(?!\S)

(?!\S)是一个negative lookahead,如果当前位置右侧没有非空格字符,则匹配失败,即它匹配后跟空格或结尾的位置string(它等于(?=\s|$)正向前瞻,但由于没有交替而更有效。)

答案 1 :(得分:1)

您可以使用空白字符或行尾(带/m标志)进行更改:

/\w*-[Ff]iltered(\s|$)/m

Demo

这是针对正则表达式环境而不浏览断言(awk,ERE等)如果您浏览一下,请使用WiktorStribiżew的答案。

答案 2 :(得分:-2)

您可以使用:

\w*Id\b

\w*允许Id前面的单词字符和\b确保Id位于单词的末尾(\b是单词边界断言)。