用于捕获第 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\"]+(,)
作为额外的左边界,这意味着您的输入必须以此表达式开头。
我想捕获字符串中的第三个逗号,例如:
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\"]+(,)
作为额外的左边界,这意味着您的输入必须以此表达式开头。