我正在使用R和stringr包中的递归正则表达式进行实验。它以某种方式给了我一个语法错误:U_REGEX_RULE_SYNTAX
正则表达式正常工作,并且仅匹配匹配的括号:
https://regex101.com/r/Uv9Xy4/1
但是在R中,它给了我所说的语法错误:
str_extract("((blub))(", "(?s)\\((?:[^()]+|(?R))*+\\)")
我想念任何控制字符吗?
答案 0 :(得分:0)
ICU正则表达式库无法完成PCRE能够做的所有事情。 ICU正则表达式引擎不支持递归。
因此,将基数R与stringr
一起使用:
perl=TRUE
请注意,x <- "((blub))("
regmatches(x, regexpr("\\((?:[^()]+|(?R))*+\\)", x, perl=TRUE))
## => [1] "((blub))"
DOTALL修饰符在这里是多余的,因为模式中没有(?s)
,可以安全地删除它。