0

我在使用正则表达式延迟匹配时遇到问题。没有例子很难解释:

我的正则表达式:A\d*?(88)?\d*?B


示例 1:A12388456B

我想要的:匹配字符串,第 1 组匹配“88”

会发生什么:匹配字符串,但组 1 不匹配。


示例 2:A123B

我想要的:匹配字符串,组 1 不匹配。

会发生什么:工作正常


基本上我希望第 1 组匹配出现的“88”,但我也想匹配任何模式A\d+B

这似乎应该很简单,但我遇到了麻烦。

4

3 回答 3

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。

于 2012-08-09T17:24:28.830 回答
0

您要匹配的第一个组未标记为组。

你会想要:

(A\d*)?(88)?\d*?B

然后你有两个子组和主匹配。

于 2012-08-09T17:19:14.370 回答
0

使用正则表达式,如果找到匹配A(?=\d*(88))\d*B,组 1 将包含。88

于 2012-08-09T18:21:14.693 回答