R:在正则表达式匹配中获得第一个反向引用的位置

时间:2016-10-14 08:03:04

标签: r regex backreference

我正在使用R.我有一个带有捕获组的正则表达式。我想在第一个匹配的子字符串中找到第一个反向引用(\\1)的位置和长度。

例如,假设正则表达式为b(a+)b且字符串为bbaaab;从位置2开始,第一个匹配的子串是baaab,第一个反向引用的起始位置是3,第一个反向引用的长度是3。

1 个答案:

答案 0 :(得分:1)

我将通过构建问题中的示例来说明如何做到这一点。

如果你做regexpr("b(a+)b", "bbaaab", perl = TRUE),你会得到

[1] 2
attr(,"match.length")
[1] 5
attr(,"useBytes")
[1] TRUE
attr(,"capture.start")

[1,] 3
attr(,"capture.length")

[1,] 3
attr(,"capture.names")
[1] ""

因此,如果您想要获得第一个反向引用的开头,则执行attr(regexpr("b(a+)b", "bbaaab", perl = TRUE), 'capture.start')[1],如果您想获得其长度,则执行attr(regexpr("b(a+)b", "bbaaab", perl = TRUE), 'capture.length')[1]。您可以轻松地对此进行概括,以获得第n个反向引用/捕获组的位置和长度。