取出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}: 只匹配一个字母