【发布时间】:2019-04-27 01:25:43
【问题描述】:
我想捕获字符串中的第三个逗号,例如:
98,52,"110,18479456000019"
我想到了一个类似字符的东西,除了:
[^"0123456789]
但是,结果是捕获了所有逗号。
在那之后,我尝试了一些关于第 n 次捕获的正则表达式 - 似乎是一个解决方案 - 但没有一个有效。
我该如何解决这个问题?
【问题讨论】:
标签: regex regex-group
我想捕获字符串中的第三个逗号,例如:
98,52,"110,18479456000019"
我想到了一个类似字符的东西,除了:
[^"0123456789]
但是,结果是捕获了所有逗号。
在那之后,我尝试了一些关于第 n 次捕获的正则表达式 - 似乎是一个解决方案 - 但没有一个有效。
我该如何解决这个问题?
【问题讨论】:
标签: regex regex-group
有几种方法可以捕获第三个,。 This RegEx 是一种方法:
([\d,])\x22\d+(,)\d+\x22
你想要的,在第二组(,)中,为了简单起见,你可以使用$2来调用它。
为了安全起见,我在此 RegEx 中添加了额外的边界,您可以将其删除:
\x22 只是 ",如果您愿意,可以替换它:
([\d,])"\d+(,)\d+"
您还可以在必要时使用 (\) 并转义字符。
如果你的输入有点复杂,可能是这样的:
您可以在第三个 , 之前创建一个中间边界,并在中间边界 ([\d\w\"]+) 中添加所有可能的字符,例如 this RegEx:
(\d+,){2}[\d\w\"]+(,)
并使用 $2 捕获第三个 ,。这一次你也可以从右侧放松你的表情,它仍然可以工作。
您还可以在正则表达式中添加一个开始 ^:
^(\d+,){2}[\d\w\"]+(,)
作为附加的左边界,这意味着您的输入必须以该表达式开头。
【讨论】: