取出r中字符串空格中间的字符
take out the characters in the middle between spaces of a string in 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+
)。)
您可以在这种情况下使用的另一个正则表达式
library(stringr)
str_extract_all(x, "\d{1}\w{1}\d{1}\w{1}")
#[1] "1X2L" "3X4L" "5X6L"
\d{1}
: 只匹配一个数字
\w{1}
: 只匹配一个字母
我有几个字符串像
“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}
: 只匹配一个字母