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

Regex 以特定单词结尾的正则表达式,regex,Regex,我有下面的正则表达式沙盒 当我使用\w*-[Ff]iltered\b时,它会得到fff-filtered-qq和nope-filtered-ok,这是我不想要的。我只想要以-过滤结尾的单词。例如this filtered和wow filtered 我缺少什么?您可以使用空白边界(?!\S): 见 要确保连字符前至少匹配一个单词字符,请将*替换为+: \w+-[Ff]iltered(?!\S) (?!\S)如果当前位置右侧没有非空格字符,则匹配失败,也就是说,它匹配后跟空格或字符串结尾的位置(

我有下面的正则表达式沙盒

当我使用
\w*-[Ff]iltered\b
时,它会得到
fff-filtered-qq
nope-filtered-ok
,这是我不想要的。我只想要以-过滤结尾的单词。例如
this filtered
wow filtered


我缺少什么?

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

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

\w+-[Ff]iltered(?!\S)
(?!\S)
如果当前位置右侧没有非空格字符,则匹配失败,也就是说,它匹配后跟空格或字符串结尾的位置(它等于
(?=\S |$)
正向前瞻,但由于没有交替,因此效率更高).

您可以使用:

\w*Id\b

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

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


这将适用于没有环顾断言(awk、ERE等)的正则表达式环境。如果您环顾四周,请使用Wiktor Stribiżew的答案。

-
不是单词字符。我认为他实际上是在尝试匹配“-filtered”--据我所知,他希望破折号是一个文字字符..你可以看到他在原来的帖子中尝试了
\w*-[Ff]iltered\b
。。。你的答案有什么不同吗?不是我:)这也是一个很好的替代品。谢谢谢谢似乎有人发了牢骚,把问题和每一个答案都投了赞成票。天哪@dawg看起来像一个大规模的下击波,它时不时地发生。
\w*Id\b
/\w*-[Ff]iltered(\s|$)/m