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