R regex数据帧值中第^1行的开头
鉴于: 但不符合以下条件:R regex数据帧值中第^1行的开头,regex,r,Regex,R,鉴于: 但不符合以下条件: grepl("[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE) ^(行/字符串开头)字符导致了问题,但原因是?因为正则表达式中缺少空格 “^[0-9]*Mbps$”或“^[0-9]*\\s*Mbps$”将与输入匹配 “[0-9]*Mbps$”匹配(不一定从字符串开头开始)“数字字符的出现次数为零,后跟“Mbps”和字符串结尾” “^[0-9]*Mbps$”与输入不匹配,因为它要求输入以零或多个数字开头,然后是“
grepl("[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE)
^
(行/字符串开头)字符导致了问题,但原因是?因为正则表达式中缺少空格
“^[0-9]*Mbps$”
或“^[0-9]*\\s*Mbps$”
将与输入匹配
“[0-9]*Mbps$”
匹配(不一定从字符串开头开始)“数字字符的出现次数为零,后跟“Mbps”和字符串结尾”
“^[0-9]*Mbps$”
与输入不匹配,因为它要求输入以零或多个数字开头,然后是“Mbps”(无空格!),然后是字符串结尾 regex在开头查找一个数字,然后在结尾查找Mbps
。因为中间有空格,所以没有匹配。要匹配字符串,请使用^[0-9]*\\s*Mbps$
grepl("^[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE)
[0-9]*Mbps$
只匹配每个项目末尾的Mbps
,因为[0-9]*
可以匹配一个空字符串,因为*
量词。第二个版本基本上是说,“Mbps”或“Mbps”或“Mbps”(如果有)之前只能有数字。查看扩展数据帧的结果,其中包含更多可能性:
[1] TRUE TRUE
>test grepl(“^[0-9]*Mbps$”,test[,“Speed”],ignore.case=TRUE)
[1] 假假真假假真
>grepl(“[0-9]*Mbps$”,test[,“Speed”],ignore.case=TRUE)
[1] 真的真的真的真的
这里的“诀窍”或“抓住”是grepl([0-9]*Mbps$”,…)
实际上与grepl(“Mbps$”,…)
没有什么不同。它将匹配一大堆你可能不想要的字符串
test <- data.frame(Speed=c("2 Mbps", "10 Mbps"))
grepl("^[0-9]*\\s*Mbps$", test[,"Speed"], ignore.case=TRUE)
[1] TRUE TRUE
> test <- data.frame(Speed=c("2 Mbps", "10 Mbps", "123Mbps", " Mbps", "aMbps", "Mbps"))
> grepl("^[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE)
[1] FALSE FALSE TRUE FALSE FALSE TRUE
> grepl("[0-9]*Mbps$", test[,"Speed"], ignore.case=TRUE)
[1] TRUE TRUE TRUE TRUE TRUE TRUE