【发布时间】:2020-08-16 00:22:27
【问题描述】:
我有几个类似的字符串
"AAA BBB CCC 1X2L BOT BR,DDD EEE FFF 3X4L BOT BR,GGG 5X6L BOT BR"
我只想取出最后一个空格之前的字符,即我想要
“1X2L、3X4L、5X6L”
只有。
如何在 R 中实现这一点?
【问题讨论】:
我有几个类似的字符串
"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+)。)
【讨论】:
(\\w+))。
在这种情况下您可以使用另一个正则表达式
library(stringr)
str_extract_all(x, "\\d{1}\\w{1}\\d{1}\\w{1}")
#[1] "1X2L" "3X4L" "5X6L"
\\d{1}: 只匹配一位数字\\w{1}: 只匹配一个字母【讨论】: