String pattern matching problem in Java

java, regex

Solution

The first argument to `string.replaceAll` is a regular expression, not just a string. The opening left bracket is a special character in a regex, so you must escape it:

line.replaceAll("\\(", "_");

Alternatively, since you are replacing a single character, you could use `string.replace` like so:

line.replace('(', '_');

Problem

In my program when I'm using ``` line.replaceAll("(", "_"); ``` I got a `RuntimeException`: ``` at java.util.regex.Pattern.error(Unknown Source) at java.util.regex.Pattern.accept(Unknown Source) at java.util.regex.Pattern.group0(Unknown Source) at java.util.regex.Pattern.sequence(Unknown Source) at java.util.regex.Pattern.expr(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.util.regex.Pattern.<init>(Unknown Source) at java.util.regex.Pattern.compile(Unknown Source) at java.lang.String.replaceAll(Unknown Source) at Processing.processEarly(Processing.java:95) at Processing.main(Processing.java:34) ``` Is there any reason? How can we avoid it?

Original source