r语言 - 使用正则表达式识别字符



我有一个包含 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"

最新更新