我正在尝试使用正则表达式提取字符串,它在这里工作:https://regexr.com/3vsd4
但是在R中运行类似的命令时会失败:
m = "(?<=~* )([ AP_])\\w+"
x = "XY_O ~ R_Z + YPP_L_WINTER + AP_C"
str_match(x, m)[1, 1]
给出错误:
stri_match_first_regex中的错误(字符串,模式,opts_regex = opts(pattern)): 后向模式匹配必须具有有界的最大长度。 (U_REGEX_LOOK_BEHIND_LIMIT)
如何编辑R
代码以返回"AP_C"
?
答案 0 :(得分:0)
您的问题暗含您的代码目标是匹配AP_C
。如果是这种情况,则不需要向后看。您可以从对str_match的调用中拉出匹配的子模式。
在不知道字符串的所有可能格式的情况下,类似这样的方法应该适用于您提供的示例:
m = "~.*? (AP_\\w+)"
x = "XY_O ~ R_Z + YPP_L_WINTER + AP_C"
str_match(x, m)[1, 1]
根据您的格式要求,可能还有其他正则表达式可能性。