2012-07-26 64 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

相关问题