我想编写一个正则表达式,它将匹配使用某种Unicode编码编码的文本中特定字符的所有重音形式,而不会在字符类中明确列出所有这些形式。
因此,例如,如果我想匹配a
的任何重音版本,[aàáâãäå]
是不够的,因为它只获得ISO中的a
8859-1,可能还有其他口音不会出现在那里。可以接受的东西就像\p{Base_Character: a}
一样,是否有这样的东西在Unicode中定义。是否存在这样的事情?
编辑:我不能首先对字符串进行ASCII格式化---字符串在数据库中我无法直接访问。事实上,我没有对此处的任何代码级访问权限。我能给出的唯一输入是正则表达式。
答案 0 :(得分:0)
不,除了列出重音版本的相关代码之外,没有其他任何库可以执行任何操作。 即使在UTF-8中,我也没有在代码中看到任何可辨别的模式。老实说,制作其他重音版本的列表不会花太长时间。
答案 1 :(得分:0)
我认为你不能那样做。
根据您的语言/平台和需求,可能有用的解决方法是在匹配a
之前“ascii-fy”您的字符串。例如,在Java中:
String s1 = "Hernán";
String s2 = Normalizer.normalize(s1, Normalizer.Form.NFD).replaceAll("[^\\p{ASCII}]", "");
// s2: "Hernan"
System.out.println(s2);
System.out.println(s2.matches(".*a.*"));