微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用正则表达式从给定文本中捕获第二个匹配项

如何解决如何使用正则表达式从给定文本中捕获第二个匹配项

我试图从给定的文本中捕获第二个匹配项,即

hash=e1467eb30743fb0a180ed141a26c58f7&token=a62ef9cf-2b4e-4a99-9335-267b6224b991:IO:OPCA:117804471:OPI:false:en:opsdr:117804471&providerId=paytm

在上面的文本中,我想捕获长度为 9 的第二个数字 (117804471)。

我尝试了以下操作,但没有用;所以请帮我解决这个问题。

https://regex101.com/r/vBJceR/1

解决方法

你可以使用

^(?:.*?\K\b[0-9]{9}\b){2}

参见regex demo

详情

  • ^ - 字符串的开始
  • (?: - 非捕获组的开始:
    • .*? - 除换行符以外的任何零个或多个字符(尽可能少),后跟
    • \K - 匹配重置操作符丢弃目前匹配的文本
    • \b[0-9]{9}\b - 一个 9 位数字作为一个整体
  • ){2} - 上面定义的模式序列的两次出现。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。