확실히 잘 작동합니다 ... 일치하는 문자열에 대해 테스트하면 :)
문제는 대문자로"Student (male): John"
시작 하고 소문자 를 일치 시키려고한다는 것 입니다. 그것은 얻는 것만 큼 간단합니다! S
s
또는 다음 [()]
중 하나와 일치 하는 데 사용할 수 있습니다 .(
)
p = p.replaceAll("[()]", "\\\\$0");
그건 그렇고, 나는 또한 당신이 줄을 바꿀 수 있음을 지적합니다.
p = p.replaceAll("\\(", "\\\\(");
p = p.replaceAll("\\)", "\\\\)");
다음을 사용하면됩니다.
p = Pattern.quote(p);
건배!
-------------------다음은 원하는 작업을 수행하지 않습니다.
p = p.replaceAll("\\(", "\\\\(");
당신은 교체 (
로 \\\\(
. \\\\(
정규식 컴파일이다 \\(
basicly 수단이 탈출하는 \
다음 (
의 탈출하지 (
. 당신이 찾고있는 것은 다음과 같습니다.
p = p.replaceAll("\\(", "\\(");
-------------------인라인 String text = "Student (male): John";
이 정규식과 일치하지 않기 때문에student \(male\)\:\s\w+
입력 텍스트를 text = "student (male): John";
또는 첫 번째 구문 문자열로 교체phrases[0] = "Student (male)";
Ideone의 예
출처
https://stackoverflow.com/questions/22089836