正则表达式从逗号分隔列表中分隔数字

时间:2015-09-13 03:28:10

标签: regex numbers comma delimited

我需要一个纯正则表达式(没有语言)来分隔这个输入数组的数字:

L1,3,5,0,5,80,40,31,0,0,0,0,512,412,213,900

的问题:

  1. 第一个字段(L1)已修复。该数组始终以L1开头。
  2. 其他字段将始终为0或正数。
  3. 但我需要分别获取每个数据,因此它将是:
    第二个数据的正则表达式(示例中为数字3)
    第三个数据的正则表达式(示例中为数字5)
    ....
    第16个数据的正则表达式(示例中为数字900)
  4. 我尝试了这个正则表达式[^;,]*,但它无法单独获取每个数据。

    任何人都可以帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:3)

使用'纯正则表达式'来获取每个字段,您必须使用单独的捕获组:

^L(\d),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)$

Demo

(注意:在Python,Perl,Ruby,Java等中,您可以像/(\d+)/g一样进行全局查找和捕获,但这是将匹配收集到列表中的语言...)

如果您只想要一个特定字段,则可以使用编号重复。

^L(\d)(,(\d+)){N}

捕获组3始终为字段N-1,因此要捕获213,第15个字段,在您的示例中:

^L(\d)(,(\d+)){14}  

Demo2

答案 1 :(得分:0)

尝试改进dawg的方法,以便使用较少的捕获组:

第四个字段可以匹配

^L1(?:,(\d+)){3}

Online Test

第五个字段可以匹配

^L1(?:,(\d+)){4}