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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了是否可以比较一行中的两个值并获取所需的值,但这两个值都与写入的正则表达式匹配相关的知识,希望对你有一定的参考价值。

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

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

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

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

答案

在你的模式(?=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

以上是关于是否可以比较一行中的两个值并获取所需的值,但这两个值都与写入的正则表达式匹配的主要内容,如果未能解决你的问题,请参考以下文章