2
我需要能够使用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"
我可以看到这有什么问题,因为这个代码类似于网页的代码。
在此先感谢
那么究竟是什么问题呢?我在输出中看到捕获的名称。看起来你的正则表达式中有空格,但不在目标中。这是“问题”吗? – MrFlick
在模式开始处添加'(?x)'或从模式中删除空格。 –