正则表达式将数字与逗号分隔列表分开

regex to separate numbers from comma delimited list

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

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

问题:

  1. 第一个字段 (L1) 已修复。该数组将始终以 L1.
  2. 开头
  3. 其他字段将始终为 0 或正数。
  4. 但是我需要分别获取每个数据,所以会是:
    第二个数据的正则表达式(示例中的数字 3)
    第三个数据的正则表达式(示例中的数字 5)
    ....
    第十六条数据的正则表达式(示例中的数字 900)

我试过这个正则表达式 [^;,]* 但它无法单独获取每个数据。

谁能帮我解决这个问题?

使用 'pure regex' 获取每个字段,您必须使用单独的捕获组:

^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,因此要捕获第 15 个字段 213,在您的示例中:

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

Demo2

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

第四个字段可以匹配

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

Online Test

第五个字段可以匹配

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

等等