正则表达式将数字与逗号分隔列表分开
regex to separate numbers from comma delimited list
我需要一个纯正则表达式(无语言)来分隔此输入数组的数字:
L1,3,5,0,5,80,40,31,0,0,0,0,512,412,213,900
问题:
- 第一个字段 (
L1
) 已修复。该数组将始终以 L1
. 开头
- 其他字段将始终为 0 或正数。
- 但是我需要分别获取每个数据,所以会是:
第二个数据的正则表达式(示例中的数字 3)
第三个数据的正则表达式(示例中的数字 5)
....
第十六条数据的正则表达式(示例中的数字 900)
我试过这个正则表达式 [^;,]*
但它无法单独获取每个数据。
谁能帮我解决这个问题?
使用 'pure regex' 获取每个字段,您必须使用单独的捕获组:
^L(\d),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)$
(注意:在 Python、Perl、Ruby、Java 等中,您可以像 /(\d+)/g
一样进行全局查找和捕获,但那是语言收集将匹配项放入列表中...)
如果您只需要一个特定字段,可以使用编号重复。
^L(\d)(,(\d+)){N}
捕获组 3 始终是字段 N-1
,因此要捕获第 15 个字段 213,在您的示例中:
^L(\d)(,(\d+)){14}
正在尝试改进 dawg 的方法,以便使用更少的捕获组:
第四个字段可以匹配
^L1(?:,(\d+)){3}
第五个字段可以匹配
^L1(?:,(\d+)){4}
等等
我需要一个纯正则表达式(无语言)来分隔此输入数组的数字:
L1,3,5,0,5,80,40,31,0,0,0,0,512,412,213,900
问题:
- 第一个字段 (
L1
) 已修复。该数组将始终以L1
. 开头
- 其他字段将始终为 0 或正数。
- 但是我需要分别获取每个数据,所以会是:
第二个数据的正则表达式(示例中的数字 3)
第三个数据的正则表达式(示例中的数字 5)
....
第十六条数据的正则表达式(示例中的数字 900)
我试过这个正则表达式 [^;,]*
但它无法单独获取每个数据。
谁能帮我解决这个问题?
使用 'pure regex' 获取每个字段,您必须使用单独的捕获组:
^L(\d),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+),(\d+)$
(注意:在 Python、Perl、Ruby、Java 等中,您可以像 /(\d+)/g
一样进行全局查找和捕获,但那是语言收集将匹配项放入列表中...)
如果您只需要一个特定字段,可以使用编号重复。
^L(\d)(,(\d+)){N}
捕获组 3 始终是字段 N-1
,因此要捕获第 15 个字段 213,在您的示例中:
^L(\d)(,(\d+)){14}
正在尝试改进 dawg 的方法,以便使用更少的捕获组:
第四个字段可以匹配
^L1(?:,(\d+)){3}
第五个字段可以匹配
^L1(?:,(\d+)){4}
等等