在R中有以下字符串:
11:22334455.CEL
我只想提取后面的数列:以及之前那意味着
22334455
我尝试使用gsub("\\:*", "", 11:22334455.CEL),但得到了以下结果:
gsub("\\:*", "", 11:22334455.CEL)
11216803.CEL
如何修复gsub函数以仅获得22334455?谢谢大家!
gsub
hi3rlvi21#
您可以使用正则表达式捕获组(括号(\\d+))来捕获您想要的内容。
(\\d+)
sub(".*:(\\d+)\\..*", "\\1", "11:22334455.CEL") [1] "22334455"
iecba09b2#
使用stringr和group。\\d+检测一个或多个数字,这里是:和\\.(转义句点)之间的数字,位于定义捕获组的大括号内。
stringr
group
\\d+
:
\\.
library(stringr) str_extract("11:22334455.CEL", ":(\\d+)\\.", group = 1) [1] "22334455"
ffscu2ro3#
使用base R中的trimws
base R
trimws
trimws("11:22334455.CEL", whitespace = ".*:|\\..*") [1] "22334455"
iszxjhcz4#
您可以将str_extract与look-behind (?<=:)一起使用,以Assert匹配只从冒号之后的开始,并使用look-ahead (?=\\.)来Assert匹配后面必须跟一个.:
str_extract
(?<=:)
(?=\\.)
.
str_extract("11:22334455.CEL", "(?<=:)\\d+(?=\\.)") [1] "22334455"
bnl4lu3b5#
可以删除':'之前和之后的字符
':'
gsub(".*:|\\..*", "", "11:22334455.CEL") # [1] "22334455"
5条答案
按热度按时间hi3rlvi21#
您可以使用正则表达式捕获组(括号
(\\d+)
)来捕获您想要的内容。iecba09b2#
使用
stringr
和group
。\\d+
检测一个或多个数字,这里是:
和\\.
(转义句点)之间的数字,位于定义捕获组的大括号内。ffscu2ro3#
使用
base R
中的trimws
iszxjhcz4#
您可以将
str_extract
与look-behind(?<=:)
一起使用,以Assert匹配只从冒号之后的开始,并使用look-ahead(?=\\.)
来Assert匹配后面必须跟一个.
:bnl4lu3b5#
可以删除
':'
之前和之后的字符