假设我有以下字符串:
abcdef abcdcd abcdab
我希望匹配以abcd
开头的所有单词,而不是以cd结尾的单词。在Regex101.com上,我试过了:
\babcd(?=^cd)
以及
\babcd(?=!cd)
但没有命中。这是阻止我的“(?= 不 cd)”。
请注意,我不希望在其他两个单词的末尾匹配ef
或ab
,仅abcd
答案 0 :(得分:2)
您可以使用
\babcd(?!\w*cd\b)
请参阅regex demo
<强>详情
\b
- 字边界abcd
- 文字abcd
子字符串(?!\w*cd\b)
- 一个否定前瞻((?!...)
),如果在当前位置的右侧紧跟着cd
后面的任何0 +字符,则会导致匹配失败单词边界(单词结尾))。将\w
替换为[a-zA-Z]
或\p{L}
/ \p{Alpha}
(如果支持)仅匹配字母。