我在使用正则表达式进行惰性匹配时遇到问题。没有例子就很难解释:
我的正则表达式:A\d*?(88)?\d*?B
示例1:A12388456B
我想要的:匹配字符串,组1匹配“88”
会发生什么:匹配字符串,但组1不匹配。
示例2:A123B
我想要的是:匹配字符串,第1组不匹配。
会发生什么:正常工作
基本上我希望组1匹配“88”,如果它出现,但我想匹配任何模式A\d+B
。
这看起来应该很简单,但我遇到了麻烦。
答案 0 :(得分:1)
在Javascript中试用这个正则表达式:
'A12388456B'.match(/A(?:\d*?(88))?\d*?B/);
> ["A12388456B", "88"] // Matches string and 88.
'A123B'.match(/A(?:\d*?(88))?\d*?B/);
> ["A123B", undefined] // Matches string but nothing else.
在第一个例子中,第1组捕获88。
答案 1 :(得分:0)
您想要匹配的第一个群组未标记为群组。
你想要:
<击>(A \ d *)?(88)?\ d * 2 B 击>
然后你有两个子组,主要匹配。
答案 2 :(得分:0)
使用正则表达式A(?=\d*(88))\d*B
,如果找到匹配项,则组1将包含88
。