I have a large array with string. Now, I need to use the string in the array to form patterns. However for the string with round brackets, the constructed patterns don\'t work.
It should definitely work well... if you test against a matching String :)
Your problem is that "Student (male): John"
starts with an uppercase S
, and you're trying to match a lowercase s
. That's as simple as it gets!
Note that you may use [()]
to match either (
or )
:
p = p.replaceAll("[()]", "\\\\$0");
By the way, I would also point out that you could replace the lines:
p = p.replaceAll("\\(", "\\\\(");
p = p.replaceAll("\\)", "\\\\)");
Simply by using:
p = Pattern.quote(p);
Cheers!
Because in line String text = "Student (male): John";
does not match with regex student \(male\)\:\s\w+
Replace input text with text = "student (male): John";
or first phrase strings to phrases[0] = "Student (male)";
Example on Ideone
The following is not doing what you want:
p = p.replaceAll("\\(", "\\\\(");
You are replacing (
with \\\\(
. \\\\(
compiled in regex is \\(
, which basicly means escape the \
and then (
, not escape the (
. What you are looking for is the following:
p = p.replaceAll("\\(", "\\(");