R正则表达式:找到最后一个匹配

时间:2016-08-18 13:22:11

标签: regex r

我需要一个正则表达式脚本(在R语言中),它找到最后一个匹配。

以下是一个例子:

input = c("(test1(test2(test3","(((((othertest1(othertest2(othertest3")
regexpr('the_right_regular_expression_here_which_can_finds_the_last_but_one_'(' ', input)

结果必须是: 7 16 ,因为在第一种情况下,最后一个'('在第7个位置(从左),并且在第二种情况下,最后一个'('在第16位(从左)开始。

我找到了一个可以找到最后一个匹配的正则表达式,但我无法以正确的方式对其进行转换:

\\([^\\(]*$

感谢您的帮助!

1 个答案:

答案 0 :(得分:6)

要匹配从最后一个(开始的一大块文本,您可以使用

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

详细

  • (\\([^(]*){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