【问题标题】:Regex for capturing the nth occurrence of a char用于捕获第 n 次出现的字符的正则表达式
【发布时间】:2019-04-27 01:25:43
【问题描述】:

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

98,52,"110,18479456000019"

我想到了一个类似字符的东西,除了:

[^"0123456789]

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

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

我该如何解决这个问题?

【问题讨论】:

    标签: regex regex-group


    【解决方案1】:

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

    作为附加的左边界,这意味着您的输入必须以该表达式开头。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-04-10
      • 2020-10-06
      • 2021-12-27
      相关资源
      最近更新 更多