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次