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

R: Get position of first backreference in regex match

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

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

我将通过问题中的示例展示如何做到这一点。

如果你这样做 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 个反向引用/捕获组的位置和长度。