如何在正则表达式中排除某些单词

How to exlude certain word on regex

我有一个文本文档需要修改。大多数单词由“-”(减号)字符分隔。

所以在 sublime text 中,我尝试了这个模式:

(\w+)\-(\w+)

这种模式工作得很好,但文档中有一个词自然地带有“-”(减号)字符。 (例如:foo-bar)

所以我需要一个模式来查找所有减号分隔的单词但排除 "foo-bar"

抱歉,如果这个问题之前有人问过,但我找不到我需要的答案

您可以使用否定前瞻(使用可选的 i 开关以不区分大小写的方式匹配单词):

(?i)(?!\bfoo\-bar\b)\b(\w+)-(\w+)\b

请注意,这仅适用于非重叠匹配项。

参见示例:

如果你想用 space 替换我在屏幕截图中提供的情况下的连字符,你可以使用 (?!\bfoo\-bar\b)\b(\w+)\-(?=\w) 搜索正则表达式并替换为 </code> (结果: <code>go there now):