How to convert javascript regex to safe java regex?
Get rid of "/"
and "/g"
at the start and the end of regex. Then you need to escape every "\"
occurrence like so: "\\"
.
The "g" part means global. This is controlled in how you use regex in Java as opposed to in the regex string.
Get rid of the forward slashes. You don't need those in Java. Also, Java's flavor of regex doesn't recognize switches like /g
and /i
; those are controlled by constants in java.util.regex.Pattern
.
The only Javascript regex switches that make sense in the Java world are /i
and /m
. These map to Pattern.CASE_INSENSITIVE
and Pattern.MULTILINE
(you can use these switches when creating a regex from the Pattern
class, or you can use them inline -- I'll show this later).
The /g
doesn't map to anything, but you can control replace behavior by using String.replaceAll
versus String.replaceFirst
.
To get your code to work, you'd have to do something like this:
strOutput.replaceAll("{{[^]*?}}", "");
If you wanted to use switches, you need to do add something like (?i)
to the beginning of the regex.
You can't use String.replace
because it takes in a CharSequence
for the first argument and not a regex.
Also keep in mind that the "quick regex" methods offered by the String
class may not work like you expect it to. This is because when you specify a pattern (let's say abc
) as a regex for matches
for example, the actual pattern seen by Java is ^abc$
. So abc
will match, but abcd
will not.
There is more information here.