6

Is there a library or any easy way to convert a string and make sure its compatible as a regex to look for and replace in another string. So if the string is "$money" it would get converted to "\$money". I tried using StringEscapeUtil.escape but it doesn't work with characters such as $.

Kevin Colin
  • 347
  • 3
  • 4
  • 10

2 Answers2

12

You can use Pattern.quote("$money").

Reimeus
  • 158,255
  • 15
  • 216
  • 276
7

Prepend the \\Q in front of the string, and \\E at the end:

"\\Q$money\\E"

This tells the regex engine that the string between \Q and \E must be interpreted verbatim, ignoring any metacharacters that it may contain.

Sergey Kalinichenko
  • 714,442
  • 84
  • 1,110
  • 1,523