首页 > 解决方案 > 正则表达式捕获:仅从第二组获取结果

问题描述

我有以下字符串:

'pp_3', 365]

之后pp_的内容可能有不同的长度。之后,和之前]是我想要捕捉的(而且只有它)。它的长度各不相同,但它始终是一个数字。

我想出了(?<=pp_).*,(.*)(?=])。它给出3', 365了完整的匹配,并且在第 1 组中有我想要的“365”。我如何才能获得365完整匹配?

如果我无法解释我的疑问,请告诉我。谢谢

标签: javaregexpattern-matchingregular-language

解决方案


要仅匹配数字,并且如果您想使用积极的后视,您可以使用 Java 支持的后视中的量词(您可以自己指定)

(?<=pp_[^,]{0,1000}, )\d+(?=])

解释

  • (?<=积极向后看,断言左边是
  • pp_[^,]{0,1000}匹配,匹配除0-1000 次pp_以外的任何字符,
  • , 匹配逗号和空格
  • )近距离观察
  • \d+匹配 1+ 个数字
  • (?=])正向前瞻,断言右边是]

在 Java 中

String regex = "(?<=pp_[^,]{0,1000}, )\\d+(?=])";

Java 演示

您也可以改用捕获组:

pp_[^,]*, (\d+)]

正则表达式演示


推荐阅读