2012-07-26 94 views
3

我需要正則表達式搜索字符串出現次數具備這些條件:字邊界上正則表達式匹配器忽略變音符號

  • 不區分大小寫
  • 忽略變音符號

我的代碼:

CharSequence text = "One Twó"; 
String searchString = "two"; 
Pattern p = Pattern.compile("(?i)\\b"+searchString); 
Matcher m = p.matcher(text); 
while(m.find()) { 
    int s = m.start(); 
    int e = m.end(); 
} 

前2 c通過(?i)和\ b模式表達式來實現。

我仍然需要實現第3個目標,忽略變音符號,所以在上面搜索到的字符串「two」會匹配文本中的文本「Twó」。怎麼樣?

感謝

+0

可能重複的[NǹN N N N N N N̈ɲƞᶇɳȵ - > n或刪除從Unicode區別標記chars](http://stackoverflow.com/questions/1453171/nnn-or-remove-diacritical-marks-from-unicode-cha) – Keppil 2012-07-26 06:59:20

+2

這不是關於刪除變音符號,而是在文本搜索期間忽略它們。 – 2012-07-26 07:03:31

+1

對上述問題的第二個答案似乎是你正在尋找的:http://stackoverflow.com/a/1454826/1343161 – Keppil 2012-07-26 07:19:57

回答

2

我建議你刪除變音符號試圖將字符串匹配之前。

相關問題:的

+0

可實現的,但需要額外的步驟,更多的代碼,內存分配,更多的GC ...我更喜歡普通的正則表達式解決方案。 – 2012-07-26 07:00:49

+2

我的建議:在這個層面上,不要根據內存分配和GC做出設計決策。 – aioobe 2012-07-26 07:05:43

+0

可能的問題:這些代碼會修改原始文本,所以如果我在修改後的文本中進行搜索,則可能會從匹配​​器中獲得不正確的偏移量。 – 2012-07-26 07:07:58

相關問題