R中的正则表达式-在空格之间提取两个字母
我试图提取两个空格之间的两个字母-R中的正则表达式-在空格之间提取两个字母,r,regex,R,Regex,我试图提取两个空格之间的两个字母- AAPL US Equity 1836 JP Equity APPLE SOMETHING NOT C US Equity 结果- US JP US 我尝试的是gsub(\\s[A-Z]{2}\\s',“\\1”,vec)但这让我- AAPLEquity 1836Equity APPLE SOMETHING NOT CEquity 这似乎与我想要的正好相反。我们可以使用sub out <- rep("", length(vec
AAPL US Equity
1836 JP Equity
APPLE SOMETHING NOT
C US Equity
结果-
US
JP
US
我尝试的是gsub(\\s[A-Z]{2}\\s',“\\1”,vec)
但这让我-
AAPLEquity
1836Equity
APPLE SOMETHING NOT
CEquity
这似乎与我想要的正好相反。我们可以使用
sub
out <- rep("", length(vec))
i1 <- grepl("\\b[A-Z]{2}\\b", vec)
out[i1] <- sub(".*\\s+([A-Z]{2})\\s+.*", "\\1", vec[i1])
out
#[1] "US" "JP" "" "US"
注意:不要从别人的答案中复制语法
数据
vecgsub
命令删除与正则表达式匹配的文本部分\s[A-Z]{2}\s
查找空白、2个大写ASCII字母和空白,并将其从字符向量中删除
你可以用
x <- c('AAPL US Equity','1836 JP Equity','APPLE SOMETHING NOT','C US Equity')
sub(".*\\s+([A-Z]{2})\\s.*|.*", "\\1", x)
# => [1] "US" "JP" "" "US"
这里,(?
vec <- c("AAPL US Equity", "1836 JP Equity", "APPLE SOMETHING NOT", "C US Equity")
x <- c('AAPL US Equity','1836 JP Equity','APPLE SOMETHING NOT','C US Equity')
sub(".*\\s+([A-Z]{2})\\s.*|.*", "\\1", x)
# => [1] "US" "JP" "" "US"
library(stringr)
str_extract(x, "(?<=\\s)[A-Z]{2}(?=\\s)")
# => [1] "US" "JP" NA "US"
str_extract(x, "(?<!\\S)[A-Z]{2}(?!\\S)")