相关疑难解决方法(0)

从正则表达式中提取捕获组匹配?(或者:gregexec在哪里?)

给定包含捕获组(括号)和字符串的正则表达式,如何获得与捕获组匹配的所有子字符串,即通常由"\ 1","\ 2"引用的子字符串?

示例:考虑前缀为"xy"的正则表达式捕获数字:

s <- "xy1234wz98xy567"

r <- "xy(\\d+)"
Run Code Online (Sandbox Code Playgroud)

期望的结果:

[1] "1234" "567" 
Run Code Online (Sandbox Code Playgroud)

第一次尝试gregexpr:

regmatches(s,gregexpr(r,s))
#[[1]]
#[1] "xy1234" "xy567" 
Run Code Online (Sandbox Code Playgroud)

不是我想要的,因为它返回匹配整个模式的子串.

第二次尝试regexec:

regmatches(s,regexec("xy(\\d+)",s))
#[[1]]
#[1] "xy1234" "1234" 
Run Code Online (Sandbox Code Playgroud)

不是我想要的,因为它返回为整个模式和捕获组匹配第一次出现的.

如果有一个gregexec函数,扩展regexecgregexpr扩展regexpr,我的问题将得到解决.

所以问题是:如何检索regmatches在任意正则表达式中匹配捕获组的所有子串(或可以传递给上面示例的索引)?

注意:r上面给出的模式只是一个愚蠢的例子,它必须保持随意.

regex backreference r

13
推荐指数
3
解决办法
9308
查看次数

标签 统计

backreference ×1

r ×1

regex ×1