假设这些字符串定义:
String lowerStream = "flüßchen";
String upperStream = "FLÜSSCHEN";
String streamPattern = ".*(ss).*";
使用这种模式:
Pattern pattern = Pattern.compile(streamPattern, Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE);
...这个断言通过:
assertThat( pattern.matcher(upperStream).find() ).isTrue()
...而这个失败了:
assertThat( pattern.matcher(lowerStream).find() ).isTrue()
...而两者都 lowerStream
使用这些正则表达式upperStream
传递rubular.com :
/.*(ss).*/i
/.*(SS).*/i
/.*(ß).*/i
String.equalsIgnoreCase()
使用、String.toLowerCase().equals()
或中的任何一个也无法成功进行比较String.toUpperCase().equals()
。
java的unicode正则表达式是否只支持简单的大小写折叠?如果是这样,为什么没有明确记录?