【发布时间】:2017-04-17 22:21:45
【问题描述】:
如何使用gregexpr()in R 访问所有带有分组的匹配项(即label)?
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);
}
【问题讨论】:
-
见
?regmatches -
你能用
["label"]吗? -
regmatches(s, m)或避免使用stringr::str_extract_all(s, p)的尴尬双功能方法 -
当您将
gregexpr与regmatches一起使用时,只会保留匹配项。最简单的是使用 stringrstr_match_all。regexec可能是一个替代方案,但它不适用于 PCRE 正则表达式。