紧跟另一个字符串的正则表达式模式

Regex pattern immediately followed by another String

在下面输入字符串

abcd, of regex is not my cup of tea and coffee , but abcd - and efgh of JS are my whisky

我只想匹配 abcd - and

更一般地说 ab.*? 后跟任意数量的特殊字符和空格,然后是文字 and

我尝试了以下模式 abc.*?(?!(\w))\sand 但这与输入字符串中以粗体突出显示的两个字符串匹配。

就像abcd\W+and一样简单。

或者 abcd(?=\W+and) 如果您只想匹配文本部分。

模式 abc.*?(?!(\w))\sand 匹配太多,因为 .*? 可以回溯(它匹配任何字符)直到这个断言 (?!(\w)) 为真并且它可以匹配 \sand

但是和写abc.*?\sand是一样的因为这部分总是为真(?!(\w))\s因为下一个字符是\s所以自动不会\w


您可以使用:

\bab\w*\W*\sand\b

模式匹配:

  • \b 防止部分单词匹配的单词边界
  • ab字面匹配
  • \w* 匹配可选的单词字符
  • \W* 匹配可选的非单词字符
  • \sand 匹配后跟 and
  • 的空白字符
  • \b一个单词边界

Regex demo