正则表达式匹配特定的一组数字或字母
regex to match specific set of numbers or letters
使用分类为各种“波浪”的调查数据,每个波浪标记为 1 - 14,或者字母“A”或“E”,后跟变量名称。
例如要解析:
- 3educ > 波数:3,变量:educ
- Aage > wave: A, variable: age
尝试了各种字符串,例如
^([0-9]?|A|E)(\w+)
没有效果。请指教
(将 stringr 与 R 结合使用)
没关系我想我明白了:
^([0-9][0-9]?|a|e)(\w+)
如果您需要为数值范围创建正则表达式,请考虑使用 automatic numeric range regex generator。匹配从 1
到 14
的整数的正则表达式是 (?:[1-9]|1[0-4])
.
所以,你需要使用
(?i)^(?P<wave>[1-9AE]|1[0-4])(?P<variable>\w+)
见regex demo。 (?i)
设置不区分大小写模式,[1-9AE]
匹配非零数字或 A
或 E
个字符。
在 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
使用分类为各种“波浪”的调查数据,每个波浪标记为 1 - 14,或者字母“A”或“E”,后跟变量名称。
例如要解析:
- 3educ > 波数:3,变量:educ
- Aage > wave: A, variable: age
尝试了各种字符串,例如
^([0-9]?|A|E)(\w+)
没有效果。请指教
(将 stringr 与 R 结合使用)
没关系我想我明白了:
^([0-9][0-9]?|a|e)(\w+)
如果您需要为数值范围创建正则表达式,请考虑使用 automatic numeric range regex generator。匹配从 1
到 14
的整数的正则表达式是 (?:[1-9]|1[0-4])
.
所以,你需要使用
(?i)^(?P<wave>[1-9AE]|1[0-4])(?P<variable>\w+)
见regex demo。 (?i)
设置不区分大小写模式,[1-9AE]
匹配非零数字或 A
或 E
个字符。
在 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