如何只获取出现在 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."
我使用了一个正则表达式代码,它只在第 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."