我使用了正则表达式的代码,它只在第二次出现点之前获取了东西。以下是代码: -
$array
但是现在我意识到我想在第一次出现2点模式之前拍摄这些东西。
我试过
colnames(final1)[i] <- gsub("^([^.]*.[^.]*)..*$", "\\1", colnames(final)[i])
但它没有工作
尝试的例子 KC1.Comdty ... PX_LAST ... USD ...... Comdty ........
转换为
KC1.Comdty。
或
&#34; LIT.US.Equity ... PX_LAST ... USD ...... Comdty ........&#34;
到
&#34; LIT.US.Equity&#34;
有人可以提出任何建议吗? 感谢
答案 0 :(得分:1)
我们可以使用sub
匹配2个或更多点后跟其他字符,并将其替换为空白
sub("\\.{2,}.*", "", str1)
#[1] "KC1.Comdty" "LIT.US.Equity"
.
是一个暗示任何角色的元字符。因此,我们需要转义(\\.
)以获得字符
str1 <- c("KC1.Comdty...PX_LAST...USD......Comdty.......", "LIT.US.Equity...PX_LAST...USD......Comdty........")
答案 1 :(得分:1)
strsplit
的另一种解决方案:
str1 <- c("KC1.Comdty...PX_LAST...USD......Comdty.......", "LIT.US.Equity...PX_LAST...USD......Comdty........")
sapply(strsplit(str1, "\\.{2}\\w"), "[", 1)
# [1] "KC1.Comdty." "LIT.US.Equity."
要在@ akrun的答案中包含最后一个点,可以这样做:
sub("\\.{2}\\w.*", "", str1)
# [1] "KC1.Comdty." "LIT.US.Equity."