2014-10-01 66 views
0

我想寫一個正則表達式將只匹配第1季度qtr2號,qtr3qtr4有以下的正則表達式[q|qtr|qtrs|quarter]+[1-4]的幫助,但問題是,如果我問這樣的問題:「Ficoscore for Q21 2005」在Q和21之間增加一個空格,即「2005年Q 21的Ficoscore」,這是無效的。正則表達式來限制數字

String regEx = "([q|qtr|qtrs|quarter]+[1-4])"; 
    Pattern pattern = Pattern.compile(regEx, Pattern.CASE_INSENSITIVE); 
    Matcher matcher = pattern.matcher(userQuerySentence); 
    System.out.println(matcher.matches()); 
    while (matcher.find()) { 
    String quarterString = matcher.group(); 
    userQuerySentence = userQuerySentence.replaceAll(quarterString, 
       (quarterString.substring(0, quarterString.length() - 1) + " " + quarterString.substring(quarterString 
         .length() - 1))); 
    } 

回答

1

[q|qtr|qtrs|quarter]是一個字符類,我想你想(q|qtr|qtrs|quarter)

String regEx = "(?i)\\b((?:q(?:trs?|uarter)?)[1-4])\\b"; 
+0

M42我的字符串會是這樣「Ficoscore 2005年第一季度」從此我要改變字符串爲「Ficoscore爲2005年第1季度「,但與上述正則表達式沒有任何匹配。 – 2014-10-01 08:22:23

+0

首先使用'(?i)'不區分大小寫的修飾符。 – 2014-10-01 08:23:29

+0

@ M42我認爲你不介意編輯。 lang也是java,所以你需要再次逃脫。 – 2014-10-01 08:24:34