2011-08-25 5 views
-1

좋아요. 구문 분석 중이므로 해당 문자열에 toUpperCase()를 사용해야합니다. 그 후 Java RegExp를 사용하고 있습니다. 문제는 어떤 이유로 Java의 String toUpperCase()가 공백을 수정하고 RegExp가 작동하지 않는다는 것입니다.Java toUpperCase() 및 RegExp 문제

UpperCase()에 공백을 무시하도록 지시하는 방법이 있습니까? 아니면 RegExp에서 이것을 처리 할 수 ​​있습니까?

다음은 이것을 알아 내기 위해 사용하는 코드입니다. 아래에서 toUpperCase() 행의 주석을 제거하면 RegExp가 작동하지 않습니다 !!

String regExp = "([t][o][k][e][n][\\s]*[=][\\s]*)"; 
    String content = "The token ='testing'" ; 

    //content = content.toUpperCase(); //uncomment this and RegExp will break!!! 

    Pattern pattern = Pattern.compile(regExp); 
    Matcher matcher = pattern.matcher(content); 

    if(matcher.find()){ 
     int startIndex= matcher.start(1); 
     int endIndex = matcher.end(1); 

     String posStartExpression = content.substring(startIndex,endIndex); 
     System.out.println(posStartExpression); 
    } 
+1

당신이 "중단됩니다"에 의해 세계에서 무엇을 의미합니까? 대문자로 변경 될 때 공백 코드 포인트가 없으므로 공백을 변경하지 않습니다 *. 그리고 왜 피 묻은 곳 곳곳에 대괄호를 사용하고 있습니까? casefolding 대 casemapping을 이해합니까? 당신은 다른 하나가 필요할 때 하나를 사용하는 것 같습니다. 명령 행에서 대화 형 언어로 이것을 먼저 테스트 해 보셨습니까? 그렇지 않다면 왜 안 되겠습니까? 귀하의 소위 오류 메시지는 무엇입니까? 너 정말로 무엇을하려고하는거야? – tchrist

답변

3

대/소문자를 구분하므로이 문제가 발생합니다.

이 시도 :

Pattern.compile(regExp, Pattern.CASE_INSENSITIVE); 
+1

그 방법을 제시하기 위해 당신은 무엇을 제안합니까? 자신이 작성한 것을 사용하는 솔루션이 있지만 패턴이 너무 엉망이므로 그 이상의 것을해야합니다. – tchrist

+0

RegExp에 익숙하지 않아서 내가하고있는 일을 잘 모릅니다. 그러나이 솔루션은 저에게 효과적입니다 !!! – Marquinio

+0

@tchrist이 무슨 말을하고 있는지 확실하지 않습니다. 정규식이 대문자가 될 때까지 정규 표현식이 작동한다고 그는 말했습니다. 정규식은 대소 문자를 구분하지 않습니다. 이제 작동합니다. 그것에 대해 혼란스러운 점은 무엇입니까? – Femi