我有一个字符串,我想只得到右边的字符(在左边的点之后)。在这个例子中:"SgY:ghhh"
最后一个字符串是改变字符数,它左边的点数也可以改变,但至少有一个点。因此,"asdsdf"
或"dfg:dfgdfgfg"
这样的词组也会出现。
我尝试使用以下代码行,但是在第一个精确点之后我得到了第一个字符串。
g <- "fghh...eval.as.symbol.VarNum2.....SgY:ghhh"
sapply(strsplit(g, split = "\\..."), "[", 2)
[1] "eval
答案 0 :(得分:2)
使用$
标记字符串的结尾,并查找至少出现一次(...)
的字符和冒号[A-Za-z:]
的{{1}}组:
+
@ DavidArenburg寻找非点字符的解决方案似乎更清洁,更聪明:
g <- c("fghh...eval.as.symbol.VarNum2.....SgY:ghhh", "fghh...eval.as.symbol.VarNum2.....SgYghhh")
sub(pattern="^.*\\.+([A-Za-z:]+)$", replacement="\\1", g)
# [1] "SgY:ghhh" "SgYghhh"