我有以下正则表达式沙箱
https://regex101.com/r/5rcScT/4
当我使用\w*-[Ff]iltered\b
时,它会获得我不想要的fff-filtered-qq
和nope-Filtered-ok
。我只希望单词以-filtered结尾。例如this-filtered
和wow-Filtered
我在这里缺少什么?
答案 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
这是针对正则表达式环境而不浏览断言(awk,ERE等)如果您浏览一下,请使用WiktorStribiżew的答案。
答案 2 :(得分:-2)
您可以使用:
\w*Id\b
\w*
允许Id
前面的单词字符和\b
确保Id
位于单词的末尾(\b
是单词边界断言)。