鉴于:

    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]*量词可以使*匹配空字符串。

09-25 20:05