用于捕获第 n 次出现的字符的正则表达式

Regex for capturing the nth occurrence of a char

我想捕获字符串中的第三个逗号,例如:

98,52,"110,18479456000019"

我想到了类似角色的东西,除了:

[^"0123456789]

但是,结果是捕获了所有逗号。

在那之后,我尝试了一些关于第 n 次捕获的正则表达式 - 似乎是一个解决方案 - 但 none 有效。

如何解决这个问题?

有几种方法可以捕获第三个 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\"]+(,)

作为额外的左边界,这意味着您的输入必须以此表达式开头。