正则表达式 - 匹配任何单词但忽略特定单词

时间:2017-07-27 05:11:59

标签: regex

我想匹配任何开头/结尾或不包含单词"结束"但忽略单词"结束",例如:

  • 你好 - 会匹配
  • 男朋友 - 会匹配
  • 无穷无尽 - 会匹配
  • 努力 - 会匹配

  • 结束 - 匹配

我使用^(?!end)).*$但不是我想要的。

抱歉我的英文

3 个答案:

答案 0 :(得分:3)

试试这个:

^(?!(end)$).+$

这将匹配除结束之外的所有内容。

答案 1 :(得分:0)

所以你想要匹配任何单词,但不是"结束" ?

除非我误解,否则条件语句就是所需要的一切......在伪代码中:

if (word != "end") {
    // Match
}

如果您想匹配 text 中不是" end"的所有单词。你可以删除所有非字母字符,用空字符串替换模式(^end | end | end$),然后进行字符串拆分。 使用单个正则表达式的其他答案可能会更好,因为regex matches are O(n),无论模式如何。

答案 2 :(得分:0)

您可以使用此\b(?!(?:end\b))[\w]+

组件: \b - >为每个单词开始单词边界。 (?!消极预测消除结束这个词。 (?:end\b)非捕获括号,其中包含单词end和word boundary。 )关闭否定前瞻标记。 [\w]+字符类来捕获单词。

说明:正则表达式搜索只会查找以单词边界开头的位置,并将删除匹配结尾为单词的匹配项。即[WORD BOUNDARY]end[END OF WORD BOUNDARY]\w将抓住其余部分。如果您想捕获一些特殊字符,例如$等,您可以继续增加此字符类。