我需要一个正则表达式脚本(在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位(从左)开始。
我找到了一个可以找到最后一个匹配的正则表达式,但我无法以正确的方式对其进行转换:
\\([^\\(]*$
感谢您的帮助!
答案 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