2012-04-24 114 views
9

具體到我的問題沒有發現任何在搜索中出現的奇數:正則表達式:char型

我有一個字母{A,B,C},在那裏我需要製作一組字符串有一個奇怪的a的數量。

有效:ababaccccc baaaccccc駕駛室caabaaac

無效:BAAC caacccb caabbbaac

嘗試:

\b[bc]*a{3}[bc]*\b但這是非常有限的。

回答

8

以下正則表達式should work

\b[bc]*a(([bc]*a){2})*[bc]*\b 
+0

'\ b'是什麼? – CodyBugstein 2013-05-31 18:39:03

+1

@Imray \ b表示單詞邊界。 – mentics 2013-06-13 19:58:09

2

如果您需要在沒有正則表達式,即Java解決方案:

String arr[] = {"ababaccccc", "baaaccccc" , "caabaaac", "baac", "caacccb", "caabbbaac"}; 

for (String string : arr) { 
      int counter = 0; 
      for (int i = 0; i < string.length(); i++) { 
       if (string.charAt(i) == 'a') { 
        counter++; 
       } 
      } 
      if ((counter & 1) == 0) { 
       System.out.println(string + " is invalid"); 
      } else { 
       System.out.println(string + " is valid"); 
      } 
     } 
+0

爲什麼沒有一個布爾變量叫做valid,它開始爲false,並在我們遇到字符'a'時改變狀態: String arr [] = {「ababaccccc」,「baaaccccc」,「caabaaac」,「baac」 「caacccb」,「caabbbaac」}; for(String string:arr){ bool valid = false;對於(int i = 0; i 2014-12-15 14:59:03

0

那豈不是更容易

  1. 各執空白
  2. 輸入字符串算上「 a的每個元素
  3. 根據計數結果接受還是拒絕?