我有一个包含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个字母的元素。我想做的不仅仅是平凡的事情,但我需要在继续之前学习如何使用这些应用程序。
答案 0 :(得分:0)
目前尚不清楚您的期望。我从这个输入中得到了 I 所期望的东西:
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
从你以后的评论我现在怀疑你想要这个结果使用第一个&#34; ^&#34;意思是第一个字符和第二个字符需要满足下一条规则&#34; ^&#34; (在字符类中)充当否定操作。:
grep("^[^0-9]", string, value = TRUE)
[1] "Horse" "house" "orange" "I271" "B42" "yes/no"