Java 忽略字符串匹配中的特殊字符

Java ignore special characters in string matching

我想匹配 java 中的两个字符串,例如。

文本:János

搜索表达式:Janos

因为我不想替换所有特殊字符,所以我想我可以让 á 成为通配符,这样一切都会匹配这个字符。例如,如果我在 János 中搜索 Jxnos,它应该会找到它。当然,文本中可以有多个特殊字符。有没有人知道我如何通过任何模式匹配器实现这一点,或者我必须逐个比较一个字符?

使用模式和匹配器 类 以及 J\Snos 作为正则表达式。 \S 匹配任何非 space 字符。

String str = "foo János bar Jxnos";
Matcher m = Pattern.compile("J\Snos").matcher(str);
while(m.find())
{
    System.out.println(m.group());
}

输出:

János
Jxnos

一个可能的解决方案是借助 Apache Commons StringUtils.stripAccents(input) 方法去掉重音:

String input = StringUtils.stripAccents("János");
System.out.println(input); //Janos

确保还阅读了基于 Normalizer class 的更详尽的方法:Is there a way to get rid of accents and convert a whole string to regular letters?