1

Suppose I have an original string that looks like:

str1 = "erewrer<.rer>r33e<erer>re<><>rer\nrer<ew212>"

I want to get rid of all those discrete <...>s to get

"erewrerr33ererer\nrer"

I tried StringReplace

StringReplace[str1, "<" ~~ __ ~~ ">" -> ""]

but it produced

"erewrer"

which is the result with the outermost <...> removed.

What should I do?

J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574
Harry
  • 2,715
  • 14
  • 27

1 Answers1

4

You need to add Shortest[] to get the shortest consistent match(es), since Mathematica uses Longest[] (i.e. a greedy match) by default:

StringReplace["erewrer<.rer>r33e<erer>re<><>rer\nrer<ew212>", 
              Shortest["<" ~~ __ ~~ ">"] -> ""]
   "erewrerr33ererer\nrer"
J. M.'s missing motivation
  • 124,525
  • 11
  • 401
  • 574