使用R中的gregexpr按名称访问regex组结果

时间:2016-12-02 22:28:42

标签: c# r regex grouping

如何使用R中的label访问所有与分组相匹配的匹配(即gregexpr())?

s <- "aaa123bbb345ccc"
p <- "(?<label>\\d+)"
m <- gregexpr(p, s, perl = TRUE)

我有兴趣在m中打印匹配但引用组名<label1>。这可以在C#中轻松完成,但我在R中挣扎,我无法弄清楚如何从CRAN文档中做到这一点。

编辑:G Grothendieck所要求的C#代码:

string s = "aaa123bbb345ccc";
string p = @"(?<label>\d+)";
Regex r = new Regex(p);
Match m = r.Match(s);
if (m.Success)
{
    Console.WriteLine(m.Groups["label"].Value);
}

1 个答案:

答案 0 :(得分:1)

这将仅返回与label关联的子字符串。

st <- attr(m[[1]], "capture.start")[, "label"]
len <- attr(m[[1]], "capture.length")[, "label"]
substring(s, st, st + len - 1)
## [1] "123" "345"