karyn-h
karyn-h

Reputation: 133

How to match the starting and ending character for str_replace_all

I have a vector of strings

c("a b c xxxxxx d", "1 3 4 xxx", "x y z")

And I hope to replace all xx…x with an empty space. So I am expecting to get the following after removal.

c("a b c   d", "1 3 4  ", "x y z")

I did some search which suggests that string_replace_all( ) and grep( ) together can solve this problem. And I tried to use grep( ) to check if the first and last character is an "x". But I am not sure how to turn grep( ) into a pattern that can be used as an argument for string_replace_all( ).

Could anyone help?

Upvotes: 0

Views: 50

Answers (1)

Konrad Rudolph
Konrad Rudolph

Reputation: 545588

Use the pattern xx+ (“at least two repetitions of “x”) and replace that with a space:

str_replace_all(text, 'xx+', ' ')
# [1] "a b c   d" "1 3 4  "   "x y z"

An alternative way of writing the same pattern is x{2,}.

Upvotes: 1

Related Questions