使用正则表达式识别字符

时间:2018-05-01 20:19:02

标签: r regex

我有一个包含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个字母的元素。我想做的不仅仅是平凡的事情,但我需要在继续之前学习如何使用这些应用程序。

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"