正则表达式匹配特定的一组数字或字母

regex to match specific set of numbers or letters

使用分类为各种“波浪”的调查数据,每个波浪标记为 1 - 14,或者字母“A”或“E”,后跟变量名称。

例如要解析:

尝试了各种字符串,例如

^([0-9]?|A|E)(\w+)

没有效果。请指教

(将 stringr 与 R 结合使用)

没关系我想我明白了:

^([0-9][0-9]?|a|e)(\w+)

如果您需要为数值范围创建正则表达式,请考虑使用 automatic numeric range regex generator。匹配从 114 的整数的正则表达式是 (?:[1-9]|1[0-4]).

所以,你需要使用

(?i)^(?P<wave>[1-9AE]|1[0-4])(?P<variable>\w+)

regex demo(?i) 设置不区分大小写模式,[1-9AE] 匹配非零数字或 AE 个字符。

在 R 中,您可以将命名捕获组与 namedCapture library:

一起使用
x <- c("3educ","Aage","14abc","Ekajshklasjf")
library(namedCapture)
str_match_all_named(x, "(?i)^(?<wave>[1-9AE]|1[0-4])(?<variable>\w+)")

输出:

[[1]]
     wave variable
[1,] "3"  "educ"  

[[2]]
     wave variable
[1,] "A"  "age"   

[[3]]
     wave variable
[1,] "1"  "4abc"  

[[4]]
     wave variable     
[1,] "E"  "kajshklasjf