正则表达式:查找倒数第二个匹配项

3
我需要一个正则表达式脚本(用R语言编写),可以找到倒数第二个匹配项。
这里有个例子:
input = c("(test1(test2(test3","(((((othertest1(othertest2(othertest3")
regexpr('the_right_regular_expression_here_which_can_finds_the_last_but_one_'(' ', input)

结果应该是:716,因为在第一个例子中,倒数第二个'('在第7个位置(从左边开始),而在第二个例子中,倒数第二个'('在第16个位置(从左边开始)。
我找到了一个可以找到最后一个匹配项的正则表达式,但我无法以正确的方式转换它:
\\([^\\(]*$

感谢您的任何帮助!

根据您所说的“查找”的含义,这可能适合您:\([^(]*\([^(]*$在此处查看 - SamWhan
Try "(\\([^(]*){2}$" - Wiktor Stribiżew
1个回答

6

为了匹配以倒数第二个(开头的文本块,您可以使用

"(\\([^(]*){2}$"

细节:

  • (\\([^(]*){2} - 两个序列:
    • \( - 字面意思为 (
    • [^(]* - 除了(之外的零个或多个字符
  • $ - 字符串结尾。

R测试:

> input = c("(test1(test2(test3","(((((othertest1(othertest2(othertest3")
> regexpr("(\\([^(]*){2}$", input)
[1]  7 16
attr(,"match.length")
[1] 12 22
attr(,"useBytes")
[1] TRUE

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接