有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java什么正则表达式可以匹配相似的字符?

什么正则表达式可以匹配类似的字符,如(a和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

共 (1) 个答案

  1. # 1 楼答案

    您可以建立一个包含所有要匹配的字符的字符类,这样就可以将模式一替换为模式一

    Pattern p1 = Pattern.compile("\\b" + "Gep[aä]ck");
    

    但这可能会很快变得非常沉重

    Unicode中有一种称为规范化(normalization)的机制,详细信息请参见here,它允许您重新格式化字符串,以便以不同的方式进行比较

    规范化格式规范分解(NFD)采用一个包含重音字符代码点的字符串,并创建多个代码点,从基本字符开始,然后与代码点共同发起,以每个重音字符的定义良好的顺序组合重音字符版本

    对输入执行此操作后,可以使用正则表达式删除字符串中的所有重音符号,因为它们都具有Unicode属性Mark,有时缩写为M

    这将为您提供一个仅包含正则表达式将匹配的基本字符的字符串