紧跟另一个字符串的正则表达式模式
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
一个单词边界
在下面输入字符串
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
一个单词边界