Regex 如何使用正则表达式选择文本中的特定数字

Regex 如何使用正则表达式选择文本中的特定数字,regex,Regex,例如,(6:31,23:03),我想提取第一个数字6,然后下次我想提取31,之后是23,最后是03 对于31,我使用了\d+[^:]0-9],但它也使用逗号 对于03,我使用了\d+[^:,0-9],但这一个抓住了括号 每次只抓取一个数字(即总共四个正则表达式,每个数字对应一个数字)有多过分?这是文本的模板外观(6:31,23:03),只有数字更改0-99我突然想到这样的事情:\((\d+)(\d+),(\d+)(\d+)(\d+)。它使用四个捕获组一次性捕获每个数字簇。(您可以将\d+替换为\

例如,
(6:31,23:03)
,我想提取第一个数字
6
,然后下次我想提取
31
,之后是
23
,最后是
03

对于
31
,我使用了
\d+[^:]0-9]
,但它也使用逗号

对于
03
,我使用了
\d+[^:,0-9]
,但这一个抓住了括号


每次只抓取一个数字(即总共四个正则表达式,每个数字对应一个数字)有多过分?这是文本的模板外观(6:31,23:03),只有数字更改
0-99

我突然想到这样的事情:
\((\d+)(\d+),(\d+)(\d+)(\d+)
。它使用四个捕获组一次性捕获每个数字簇。(您可以将
\d+
替换为
\d{1,2}
,以更严格地将数字簇限制在长度1和2之间)

演示:


编辑以处理评论

似乎有点不清楚确切的要求是什么,但如果我正确理解您想要四个正则表达式,每个正则表达式一次捕获一个数字簇,那么它们将如下所示:

  • \((\d+:\d+,\d+:\d+\)
  • \(\d+:(\d+)\d+:\d+\)
  • \(\d+:\d+,(\d+:\d+)
  • \(\d+:\d+,\d+:(\d+)

需要一些验证,突出显示的零件
6
31
23
03
也是31,但我需要分别使用它们。每个数字最多两位数\d+只适合选择第一个数字,在这种情况下为6。我用测试它,这样我就可以用\d+抓取第一个数字,如果不是单数,我不知道如何抓取其他3个需要更多的信息。例如,
(\d{1,2})\d*:\d*(\d{1,2})
以全局方式。不需要一次性选择它们。它也需要在每次尝试中选择特定的数字。第一次尝试我选择6,第二次选择31,第三次选择23,第四次尝试选择03。所以我需要为每个数字指定特定的正则表达式。@falconProger这个答案完全符合您的要求。可以进一步修改以选择性地排除:和。你还想要什么?是的,但我使用的软件可以选择使用正则表达式从文本中提取文本信息。所以我需要提取数字,但每次都要提取。所以我没有选择排除的选项:@falconProger我不确定你的意思,所以我做了一个猜测。编辑是否解决了您的问题?