首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >删除字符串的开头和结尾,直到它在R中找到模式

删除字符串的开头和结尾,直到它在R中找到模式
EN

Stack Overflow用户
提问于 2019-05-21 01:00:31
回答 2查看 67关注 0票数 3

所以我有一个代表折叠RNA二级结构的字符串,例如:

代码语言:javascript
复制
"....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."

我的目标是去掉字符串两端的这些点,这样我就可以得到:

代码语言:javascript
复制
"(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"

我一直在尝试使用gsub函数,比如:

代码语言:javascript
复制
gsub("\\.+\\(", "", string)

在开始时,以及:

代码语言:javascript
复制
gsub("\\)\\.+", "", string)

为了结束

但此命令的输出为:

代码语言:javascript
复制
"(((((((((((((((((((((((((.......))))))))..))))..)))....."

和:

代码语言:javascript
复制
"....(((((((((...((...(((((((((((..((.(.......)))))))))))))))"

基本上,我不想去掉中间的点,只想去掉开头和结尾的点。

有没有人知道用R解决这个问题的好方法?

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-21 01:01:20

我们可以转义(\\.)或将.放在方括号([.])中,因为.是一个元字符,可以匹配任何字符。

代码语言:javascript
复制
gsub("^[.]*|[.]*$", "", string)
#[1] "(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"

在上面的代码中,我们指定锚点(^)以匹配字符串的开头,后跟零个或多个. (*)或|,字符串末尾的零个或多个点($)并替换为空白("")

数据

代码语言:javascript
复制
string <- "....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
票数 8
EN

Stack Overflow用户

发布于 2019-05-21 03:13:07

在R 3.6.0中,trimws有一个whitespace=参数,所以在结尾处的注释中使用x

代码语言:javascript
复制
trimws(x, whitespace = "\\.")
## [1] "(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"

备注

代码语言:javascript
复制
x <- "....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56225307

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档