2012-02-25 2 views
2

이것은 내가 수행하려고 시도한 것의 예제 코드 일뿐입니다.Java replaceall 대소 문자 및 특수 문자 무시

String s = "hello(1234aA)something"; 
String replaceString = "(1234aa)"; 
String s2 = s.replaceAll("(i?)" + replaceString, "something"); 

문자열은 동일하지만 대소 문자가 다를 수 있으므로 replaceall에서 (i?)을 사용하는 이유는 무엇입니까? 가 어떻게 정규식 특수

+1

교체 후 s2가 어떻게 보이겠습니까? –

+0

는 replacementstring과 약간의 실수를 저질렀습니다. 지금 여기에서 코드를 편집했으나 아직 작동하지 않습니다. – Jonas

+0

대체 문자열의 시작 부분에 "\\ Q"를, 끝에 "\\ E"를 사용하여 문제를 해결할 수있는 방법을 찾았습니다. – Jonas

답변

3

사용 quote(), 이미 케이스를 무시 알아 낸 것 같다 무시하도록 할 수 있지만 (? i)를 사용한다,는 (i?).

String s = "hello(1234aA)something"; 
String replaceString = "(?i)" + Pattern.quote("(1234aa)"); 
String s2 = s.replaceAll(replaceString, "something"); 

이렇게하면됩니다.

+0

'quote()'메소드는 처음과 끝에 "\ Q"와 "\ E"를 추가하는 것 이상을 수행하는 것 같지 않지만 API에서 특별히 정의 된 경우 메소드를 사용하는 것이 더 좋습니다 이 경우에, 물어 보는 사람은 이미 올바른 길을 가고있었습니다. –