鉴于:
test <- data.frame(Speed=c("2 Mbps", "10 Mbps"))
为什么此正则表达式与以下值匹配:
grepl("[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE)
但不符合以下条件:
grepl("^[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE)
^
(行/字符串开头)字符导致了此问题,但是为什么呢? 最佳答案
^[0-9]*Mbps$
正则表达式在开头查找一个数字,然后在结尾查找Mbps
。而且由于它们之间有空格,所以没有匹配项。要匹配字符串,请使用^[0-9]*\\s*Mbps$
。
test <- data.frame(Speed=c("2 Mbps", "10 Mbps"))
grepl("^[0-9]*\\s*Mbps$", test[,"Speed"], ignore.case=TRUE)
demo program的输出:
[1] TRUE TRUE
[0-9]*Mbps$
仅在每个项目的末尾匹配Mbps
,因为[0-9]*
量词可以使*
匹配空字符串。