在R中提取字符串的字符部分

时间:2018-10-18 22:54:26

标签: r string dplyr extract gsub

我在R中工作。我有很长的字符串向量。在此向量中,我想找到类似“ ABC23-ABC54”的字符串。确切地说,在“-”前后具有相同字符且数字不同的字符串。

到目前为止,我可以提取中间带有“-”的字符串,并分配part1 =“ ABC23”和part2 =“ ABC54”。下一步将是通过删除数字部分来匹配字符部分,但不知道字符和数字部分的确切形式和长度。

如何在R中做到这一点?

谢谢!

1 个答案:

答案 0 :(得分:0)

删除数字,使用read.table将剩下的两个字段读入两列并进行比较。

ok <- with(read.table(text = gsub("\\d", "", s), sep = "-", as.is = TRUE), V1 == V2)
ok
## [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE

s[ok]
## [1] "ABC12-ABC123" "ABC12-ABC1"   "ABC12-ABC"    "ABC12-ABC012"

注意

我们使用了以下来自问题下方评论的测试输入。

s <- c("ABC12-ABCD13", "ABC12-AB34", "ABC12-AB12", "ABC12-ABCD12", "ABC12-ABC123", 
       "ABC12-ABC1", "ABC12-ABC", "ABC12-ABC012")