在正则表达式中排除一个确切的短语

时间:2013-03-09 23:20:55

标签: regex

如何排除确切的短语?!

例如,我不希望在正则表达式代码中匹配

a sentence with hello phrase

但匹配此

a sentence with oehll phrase

起初我用过这个:

^([^hello]*)$

但它唯一的问题是排除字母“h”,“e”,“l”和“o”(不是“你好”这个词)!

我阅读了很多关于此的文章并以我能想到的任何方式使用\ b,(?!...)和(...),但我不能!

1 个答案:

答案 0 :(得分:0)

尝试使用以下正则表达式:

^.*((\W|^)hello(\W|$)){0}.*$

这只是一个黑客,不幸的是,这个表达式也会排除其他单词中嵌入“hello”的句子。 (例如,“带有 hello out短语的句子”)

替代方法:使用以下内容检测具有所需短语的句子:

^.*((\W|^)hello(\W|$)).*$

然后删除包含该短语的句子。

声明: 此外,假设您正在处理文本文件中的原始行而不是英语句子,则已编写此表达式。如果你想使用实际的句子,我建议你首先将你的文本标记为单独的句子,然后用类似的正则表达式测试每个句子。