问题描述
我有几个像这样的字符串
“ AAA BBB CCC 1X2L BOT BR,DDD EEE FFF 3X4L BOT BR,GGG 5X6L BOT BR”
我只想取出最后一个空格之前的字符,即我想要
“ 1X2L,3X4L,5X6L”
仅。
如何在R中做到这一点?
解决方法
您可以在用逗号(sub
)分割字符串之后尝试使用,
。
x <- "AAA BBB CCC 1X2L BOT BR,DDD EEE FFF 3X4L BOT BR,GGG 5X6L BOT BR"
sub('.*?(\\w+)\\s\\w+\\s\\w+$','\\1',strsplit(x,',\\s')[[1]])
#[1] "1X2L" "3X4L" "5X6L"
.*?
-匹配尽可能少的字符,直到
((\\w+)
-是一个捕获组,用于捕获我们想要的单词
\\s
-空格后跟
\\w+
-后跟一个单词
\\s
-遇到另一个空格和一个单词(\\w+
)。)
在这种情况下可以使用的另一个正则表达式
library(stringr)
str_extract_all(x,"\\d{1}\\w{1}\\d{1}\\w{1}")
#[1] "1X2L" "3X4L" "5X6L"
-
\\d{1}
:仅匹配一位数字 -
\\w{1}
:仅匹配一个字母