需要帮助改进R中的正则表达式代码吗
我正在处理地址数据,并使用正则表达式检测错误。虽然我的方法有效,但远远不够高效 首先,让我们创建一个数据集需要帮助改进R中的正则表达式代码吗,r,regex,R,Regex,我正在处理地址数据,并使用正则表达式检测错误。虽然我的方法有效,但远远不够高效 首先,让我们创建一个数据集 try_detection <- data.frame(address = c('444+MLK+Street', '444+3rd+Avenue', '5th+MLK+Avenue',
try_detection <- data.frame(address = c('444+MLK+Street',
'444+3rd+Avenue',
'5th+MLK+Avenue',
'55th+MLK+Avenue',
'555th+MLK+Avenue',
'5555th+MLK+Avenue',
'55555th+MLK+Avenue'),
stringsAsFactors = FALSE)
尝试检测您可以使用
^[[:digit:]]+[[:alpha:]]
或
看
详细信息
^
-字符串的开头
[[:digit:]+
/[0-9]+
-1个或多个(量词与一个或多个出现点匹配)数字
- 一封信
注意:如果您计划只匹配开头有1到5位数字后跟字母的字符串,您可以将+
替换为{1,5}
限制(或范围、间隔)量词
尽管ICU正则表达式允许使用裸POSIX字符类(如[:digit:]
),但我建议在括号表达式中使用它们,使它们更易于移植(即[:digit:]
)
try_detection$summary <- str_detect(try_detection$address,
'^[:digit:]{1}[:alpha:] |
^[:digit:]{2}[:alpha:] |
^[:digit:]{3}[:alpha:] |
^[:digit:]{4}[:alpha:] |
^[:digit:]{5}[:alpha:]')
try_detection$detect1 <- str_detect(try_detection$address, '^[:digit:]{1}[:alpha:]')
try_detection$detect2 <- str_detect(try_detection$address, '^[:digit:]{2}[:alpha:]')
try_detection$detect3 <- str_detect(try_detection$address, '^[:digit:]{3}[:alpha:]']
try_detection$detect4 <- str_detect(try_detection$address, '^[:digit:]{4}[:alpha:]')
try_detection$detect5 <- str_detect(try_detection$address, '^[:digit:]{5}[:alpha:]')
try_detection <- try_detection %>% mutate(summary =
ifelse(detect1 == TRUE |
detect2 == TRUE |
detect3 == TRUE |
detect4 == TRUE |
detect5 == TRUE, "Y", "N"))
^[[:digit:]]+[[:alpha:]]
^[0-9]+[[:alpha:]]