【发布时间】:2016-09-06 13:41:54
【问题描述】:
我需要使用 r 中的名称在正则表达式中捕获组的能力。我测试了本网站[Rd] Named capture in regexp 中解释的代码,并且该示例可以正常工作。我尝试修改这段代码来解决简单的正则表达式。
(xxxx)(?<id>\w{4})(?<number>\d{5})
更多详情见代码here
我尝试在 r 中做到这一点
regex = "(xxxx) (?<id>[0-9A-Za-z]{4}) (?<number>[0-9]{5})"
notable = "xxxxcn0700814"
regexpr(regex,notable,perl = TRUE)
这是我对这段代码的输出
[1] -1
attr(,"match.length")
[1] -1
attr(,"useBytes")
[1] TRUE
attr(,"capture.start")
id number
[1,] -1 -1 -1
attr(,"capture.length")
id number
[1,] -1 -1 -1
attr(,"capture.names")
[1] "" "id" "number"
我可以看出这是什么问题,因为这段代码类似于网页的代码。
提前致谢
【问题讨论】:
-
那么这里到底有什么问题呢?我在输出中看到捕获的名称。看起来您的正则表达式中有空格,但目标中没有。这就是“问题”吗?
-
在模式开头添加
(?x)或从模式中删除空格。
标签: regex r regex-group capturing-group