Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

In R, is there a better/simpler way than the following of finding the location of the last dot in a string?

x <- "hello.world.123.456"
g <- gregexpr(".", x, fixed=TRUE)
loc <- g[[1]]
loc[length(loc)]  # returns 16

This finds all the dots in the string and then returns the last one, but it seems rather clumsy. I tried using regular expressions, but didn't get very far.

See Question&Answers more detail:os

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
982 views
Welcome To Ask or Share your Answers For Others

1 Answer

Does this work for you?

x <- "hello.world.123.456"
g <- regexpr("\.[^\.]*$", x)
g
  • . matches a dot
  • [^.] matches everything but a dot
  • * specifies that the previous expression (everything but a dot) may occur between 0 and unlimited times
  • $ marks the end of the string.

Taking everything together: find a dot that is followed by anything but a dot until the string ends. R requires to be escaped, hence \ in the expression above. See regex101.com to experiment with regex.


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...