使用正则表达式查找字符串中短语的第3次出现

时间:2017-06-02 09:19:36

标签: regex

我有一个像这样的字符串:

[Semantical Error] line 0, col 46 near 'indications IS': Error: Invalid PathExpression. StateFieldPathExpression or SingleValuedAssociationField expected.

我的正则表达式目前位于group[129][1][person][0][name],其匹配\[\d+\][129][1]

但是,我希望它只匹配第三次出现[0]。我找不到任何关于此事的内容。我该怎么做?

1 个答案:

答案 0 :(得分:0)

您可以简单地在正则表达式中包含所有三个:

\d+\D+\d+\D+(\d+)

捕获组将捕获第三组数字。请注意,\D匹配任何非数字的内容。

你也可以通过重复一组表达来避免重复:

(?:\d+\D+){2}(\d+)

如果您想替换第三次出现,请使用以下内容:

s/(\d+\D+\d+\D+)\d+/${1}FOO/;

这将使用单词" FOO"替换第三组数字。在这里使用Perl语法,因为您还没有指定语言。