我有一个包含 8 个字符串元素的字符向量。我正在尝试了解如何使用正则表达式根据某些标准识别对象。
"Horse" "21-35" "house" "orange" "I271" "78.96" "B42" "yes/no"
我想识别以某个值开头的对象,比如说任何数字。
grep("^[0-9]+", string, value = TRUE)
应该根据我为正则表达式所做的阅读工作,但它似乎只给了我以字母开头的对象。或者
grep("[a-zA-Z]+", string, value = TRUE)
似乎它应该可以工作,但这给了我包含 1 个字母的所有元素。我想做的不仅仅是像这样平凡的事情,但我需要在继续之前学习如何使用这些应用程序。
目前尚不清楚您的期望。 我从这个输入中得到了我的期望:
string <- c("Horse", "21-35", "house", "orange", "I271", "78.96" ,"B42", "yes/no")
grep("^[0-9]+", string, value = TRUE)
[#1] "21-35" "78.96"
此模式要求第一个字符在 ASCII 范围内 0-9 的任何字符串。它不一定与可以转换为数值的内容匹配,如果使用as.numeric
.为此,可以考虑使用as.numeric
的值作为索引:
string[ !is.na(as.numeric(string)) ]
[1] "78.96"
Warning message:
NAs introduced by coercion
从您后来的评论中,我现在怀疑您希望使用第一个"^"的模式来获得此结果,这意味着下一个规则需要由第一个字符和第二个"^"(在字符类内(作为否定操作来满足。
grep("^[^0-9]", string, value = TRUE)
[1] "Horse" "house" "orange" "I271" "B42" "yes/no"