2011-08-25 56 views
-1

好吧我有一個字符串,我解析,我需要使用toUpperCase()該字符串。之後,我使用Java RegExp。問題在於,由於某種原因,Java的String toUpperCase()正在修改空格,而我的RegExp將無法工作。Java toUpperCase()和正則表達式問題

有沒有辦法告訴toUpperCase()忽略空白?或者也許它有可能在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 vs casemapping嗎?當你需要另一個時,你似乎正在使用一個。您是否首先在命令行中以交互式語言對此進行了測試?如果不是,爲什麼不呢?你說的錯誤信息是什麼?你真的想做什麼? – tchrist

回答

3

您遇到此行爲是因爲您的正則表達式區分大小寫。

試試這個:

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

你打算如何解決這個問題?雖然有一個解決方案使用你寫的內容,但你必須做的比這更多,因爲他們的模式已經搞砸了。 – tchrist

+0

我是RegExp的新手,所以我不知道我在做什麼,但是這個解決方案對我有用! – Marquinio

+0

不確定@ tchrist在說什麼:他說正則表達式可以工作,直到他將輸入大寫。我使正則表達式不區分大小寫。現在起作用了。有什麼困惑呢? – Femi