我有一个正则表达式,正确捕获斜杠后跟一个字符串中的数字。正则表达式的捕获组部分如下所示:
\(\d)+\\??
(斜线上的一些数字,但不包括问号),此捕获组之前和之后的正则表达式还有更多。现在我想在我的捕获组中包含一个可选的特定前缀(称为“abc _”):
一些例子:
abc_12345 is captured
12345 is captured
ab_12345 fails to match the regex
abc_ fails to match the regex
abcd_ fails to match the regex
我如何构建它?
答案 0 :(得分:3)
如果我理解正确,你想要这个:
((?:abc_)?\\d+)[?]?
?:运算符将组转换为非捕获组。我不明白部分前缀的部分。如果您允许正则表达式前面的任何内容,则不能拒绝某个可选前缀。你需要在模式前面有一个清晰的分隔符,就像一个空白区域,以便拒绝前缀。
答案 1 :(得分:2)
您的正则表达式似乎对您已描述的情况不起作用。它只捕获一位数而不是全数。你的逃避也是不一致的。
然而,这应该做你想做的事情:
((?:abc_)?\\d+)\\??
如果您使用正则表达式的前一部分,则只能回答您的上一个要求,即不应匹配不同的前缀。 (例如,如果此捕获组前面有\w+
,则任何前缀都匹配,但只捕获完整且正确的前缀)