How to replace special characters and numbers with the character and spaces on each side

Viewed 447

So basically I'm trying to convert this string: "(1+2) / 2" to this "( 1 + 2 ) / 2". And I've tried this:

String inputInfix = input.replaceAll("[^0-9/]", " [^0-9/] ");

But it doesn't work, is there some way to replace every character except "/" and the digits with a space on either side. For example, "(1 / 2)" -> " ( 1 / 2 )"

1 Answers

You can use

input.replaceAll("(?<=[^\\s/])(?=[^\\s/])", " ")

See the regex demo. Details:

  • (?<=[^\s/]) - a positive lookbehind that matches a location that is immediately preceded with a char other than a whitespace char and a slash
  • (?=[^\s/]) - a positive lookahead that matches a location that is immediately followed with a char other than a whitespace char and a slash.
Related