如何只获取出现在 2 点模式之前的字符串部分?

How to take only that part of a string which occurs before a pattern of 2 dots?

我使用了一个正则表达式代码,它只在第 2 次出现点之前获取内容。以下是代码:-

colnames(final1)[i] <- gsub("^([^.]*.[^.]*)..*$", "\1", colnames(final)[i])

但现在我意识到我想在第一次出现 2 个点的图案之前拿走这些东西。

我试过了

 gsub(",.*$", "", colnames(final)[i]) (changed the , to ..)
 gsub("...*$", "", colnames(final)[i])

但是没用

试用示例 KC1.Comdty...PX_LAST...美元......商品......

转换为

KC1.Comdty.

"LIT.US.Equity...PX_LAST...USD......Comdty........"

"LIT.US.Equity."

任何人都可以提出任何建议吗? 谢谢

我们可以使用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........")

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."