如何调整具有动态长度的字符串的右侧

时间:2015-11-29 11:23:42

标签: regex r string

我有一个字符串,我想只得到右边的字符(在左边的点之后)。在这个例子中:"SgY:ghhh" 最后一个字符串是改变字符数,它左边的点数也可以改变,但至少有一个点。因此,"asdsdf""dfg:dfgdfgfg"这样的词组也会出现。 我尝试使用以下代码行,但是在第一个精确点之后我得到了第一个字符串。

 g <- "fghh...eval.as.symbol.VarNum2.....SgY:ghhh"
 sapply(strsplit(g, split = "\\..."), "[", 2)
 [1] "eval

1 个答案:

答案 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"