正则表达式匹配不以某事结束的单词

时间:2018-02-18 20:07:23

标签: regex

假设我有以下字符串:

abcdef abcdcd abcdab

我希望匹配以abcd开头的所有单词,而不是以cd结尾的单词。在Regex101.com上,我试过了:

\babcd(?=^cd)

以及

\babcd(?=!cd)

但没有命中。这是阻止我的“(?= cd)”。

请注意,我不希望在其他两个单词的末尾匹配efab,仅abcd

1 个答案:

答案 0 :(得分:2)

您可以使用

\babcd(?!\w*cd\b)

请参阅regex demo

<强>详情

  • \b - 字边界
  • abcd - 文字abcd子字符串
  • (?!\w*cd\b) - 一个否定前瞻((?!...)),如果在当前位置的右侧紧跟着cd后面的任何0 +字符,则会导致匹配失败单词边界(单词结尾))。

\w替换为[a-zA-Z]\p{L} / \p{Alpha}(如果支持)仅匹配字母。