正则表达式捕获:仅从第二组获取结果
Regex capturing: get only result from second group
我有以下字符串:
'pp_3', 365]
pp_
之后的内容可能有不同的长度。 ,
之后和 ]
之前的内容是我想要捕获的(并且只有它)。它的长度各不相同,但始终是一个数字。
我想出了 (?<=pp_).*,(.*)(?=])
。它给出 3', 365
作为完全匹配,在第 1 组中有我想要的“365”。如何只获得 365
作为完整匹配项?
如果我无法解释我的疑问,请告诉我。谢谢
试试这个表达式。第二组应该是你想要的:
(?<='pp_)(\d*', )(\d*)]
试试这个:
[^_]*_(\d*)'\s*,\s*(\-?\d+)\s*].
这个正则表达式捕获 2 个组,对应于每个数字,第一个在 pp_
之后,第二个在 ',
之后(可能是负数)。如果你不想把第一个作为一组捕获,而不是 (\d*)
,只需写 (?:\d*)
.
为了只匹配数字,如果你想使用正后视,你可以在后视中使用量词(你可以自己指定),Java
(?<=pp_[^,]{0,1000}, )\d+(?=])
说明
(?<=
正向后视,断言左边是
pp_[^,]{0,1000}
匹配pp_
,匹配除,
以外的任意字符0-1000次
,
匹配逗号和 space
)
关闭回顾
\d+
匹配 1+ 个数字
(?=])
正面前瞻,断言右边的是]
在Java
String regex = "(?<=pp_[^,]{0,1000}, )\d+(?=])";
您也可以改用捕获组:
pp_[^,]*, (\d+)]
我有以下字符串:
'pp_3', 365]
pp_
之后的内容可能有不同的长度。 ,
之后和 ]
之前的内容是我想要捕获的(并且只有它)。它的长度各不相同,但始终是一个数字。
我想出了 (?<=pp_).*,(.*)(?=])
。它给出 3', 365
作为完全匹配,在第 1 组中有我想要的“365”。如何只获得 365
作为完整匹配项?
如果我无法解释我的疑问,请告诉我。谢谢
试试这个表达式。第二组应该是你想要的:
(?<='pp_)(\d*', )(\d*)]
试试这个:
[^_]*_(\d*)'\s*,\s*(\-?\d+)\s*].
这个正则表达式捕获 2 个组,对应于每个数字,第一个在 pp_
之后,第二个在 ',
之后(可能是负数)。如果你不想把第一个作为一组捕获,而不是 (\d*)
,只需写 (?:\d*)
.
为了只匹配数字,如果你想使用正后视,你可以在后视中使用量词(你可以自己指定),Java
(?<=pp_[^,]{0,1000}, )\d+(?=])
说明
(?<=
正向后视,断言左边是pp_[^,]{0,1000}
匹配pp_
,匹配除,
以外的任意字符0-1000次,
匹配逗号和 space)
关闭回顾\d+
匹配 1+ 个数字(?=])
正面前瞻,断言右边的是]
在Java
String regex = "(?<=pp_[^,]{0,1000}, )\d+(?=])";
您也可以改用捕获组:
pp_[^,]*, (\d+)]