是否可以比较一行中的两个值并获取所需的值,但这两个值都与写入的正则表达式匹配

问题描述 投票:0回答:1

text =“来自团队的快乐4/20!13/10恭喜......之后这么多内容”

我想只获得13/10这是评级。我写过正则表达式

(\d+\.\d+|\d+)/(((?=10)10)|([1-9]\d+)) 

但它取得了第一个(4/20)。这有可能实现使用正则表达式吗?

regex
1个回答
1
投票

在你的模式(?=10)10的这一部分,你可以省略正向前瞻,因为这表示如果右边的是10,那么匹配10.这部分[1-9]\d+匹配10及以上,所以10已经在范围内。

您可以使用带有quantifier {2}的捕获组来重复该组。

你的模式也可以写成\d+(?:\.\d+)?/[1-9]\d+)

要获得第二组,您可以使用:

^(?:.*?(\d+(?:\.\d+)?/[1-9]\d+)){2}
  • ^字符串的开头
  • (?:非捕获组 .*?匹配任何非贪婪的字符 (捕获组 \d+(?:\.\d+)?匹配1+位数,可选择匹配一个点和1+位数 /匹配/ [1-9]\d+第10场及以上比赛 )关闭捕获组
  • ){2}关闭非捕获组并重复2次

Regex demo

© www.soinside.com 2019 - 2024. All rights reserved.