哪些正则表达式可以匹配类似的字符,例如(ä和a)或俄语(и和й)? 在我的代码下面...
Sting text1 = " Passagiere noch auf ihr fehlendes Gepäck"
Sting text2 = " Passagiere noch auf ihr fehlendes Gepack"
Pattern p1 = Pattern.compile("\\b" + "Gepack");
Pattern p2 = Pattern.compile("\\b" + "Gepack");
Matcher m1 = p1.matcher(text1); // doesn't find any occurrence
Matcher m2 = p2.matcher(text2) // founds one occurrence
答案 0 :(得分:1)
您可以为要匹配的所有字符建立一个字符类,以便可以将模式一替换为
Pattern p1 = Pattern.compile("\\b" + "Gep[aä]ck");
但这会很快变得非常繁重
Unicode中有一种称为规范化的机制,有关详细信息,请参见here,该机制可让您重新格式化字符串以进行不同方式的比较。
规范化形式规范分解(NFD)包含一个包含重音字符代码点的字符串,并创建多个代码点,从基本字符开始,然后与代码点共同发起,以明确定义的顺序组合重音的字符版本字符。
对输入完成此操作后,您可以使用正则表达式从字符串中删除所有重音,因为它们都具有Unicode属性Mark
,有时缩写为M
。
这将为您提供一个仅包含正则表达式将与之匹配的基本字符的字符串。