我想匹配任何开头/结尾或不包含单词"结束"但忽略单词"结束",例如:
但
我使用^(?!end)).*$
但不是我想要的。
抱歉我的英文
答案 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
将抓住其余部分。如果您想捕获一些特殊字符,例如$
等,您可以继续增加此字符类。