Emi*_*hez 3 regex string r gsub
因此,我有一个字符串代表折叠RNA的二级结构,例如:
"....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
Run Code Online (Sandbox Code Playgroud)
我的目标是摆脱字符串极端中的这些点,以便获得:
"(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"
Run Code Online (Sandbox Code Playgroud)
我一直在尝试通过使用gsub函数,如:
gsub("\\.+\\(", "", string)
Run Code Online (Sandbox Code Playgroud)
首先,以及:
gsub("\\)\\.+", "", string)
Run Code Online (Sandbox Code Playgroud)
最后
但是此命令的输出为:
"(((((((((((((((((((((((((.......))))))))..))))..)))....."
Run Code Online (Sandbox Code Playgroud)
和:
"....(((((((((...((...(((((((((((..((.(.......)))))))))))))))"
Run Code Online (Sandbox Code Playgroud)
基本上,我不希望除去中间的点,仅除去开头和末尾的中间点。
有人知道用R解决它的好方法吗?
谢谢
我们可以将元字符转义(\\.)或放在.方括号([.])中,.以匹配任何字符。
gsub("^[.]*|[.]*$", "", string)
#[1] "(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))"
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,我们指定了锚点(^)以匹配字符串的开头,后跟零个或多个.(*)或字符串的结尾()或|零个或多个点,$并替换为空白("")
string <- "....(((((((((...((...(((((((((((..((.(.......))))))))..))))..)))....."
Run Code Online (Sandbox Code Playgroud)