问题描述
我的正则表达式如下:
/black(?=hand)[ s]/
我希望它匹配黑手或黑手.但是,它不匹配任何内容.我正在 Regex101 上进行测试.
I want it to match blackhands or blackhand. However, it doesn't match anything. I am testing on Regex101.
我在做什么错了?
推荐答案
Lookahead不会消耗正在搜索的字符串.这意味着[ s]
试图匹配紧随 black 之后的空格或 s .但是,您的前瞻性提示 hand 必须紧跟 black ,这样正则表达式永远无法匹配任何内容.
Lookahead does not consume the string being searched. That means that the [ s]
is trying to match a space or s immediately following black. However, your lookahead says that hand must follow black, so the regular expression can never match anything.
要在使用先行提示时匹配黑手或黑手,请在先行提示内移动[ s]
:black(?=hand[ s])
.另外,也不要使用前瞻功能:blackhand[ s]
.
To match either blackhands or blackhand while using lookahead, move [ s]
within the lookahead: black(?=hand[ s])
. Alternatively, don't use lookahead at all: blackhand[ s]
.
这篇关于正向超前无法按预期工作的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!