加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java不区分大小写的正则表达式匹配不符合字母?

发布时间:2020-12-14 05:45:07 所属栏目:Java 来源:网络整理
导读:考虑这个程序: import java.util.regex.Pattern;public class xx { /* * ? * LATIN CAPITAL LETTER N WITH TILDE * Unicode: U+00D1,UTF-8: C3 91 */ public static final String BIG_N = "u00d1"; /* * ? * LATIN SMALL LETTER N WITH TILDE * Unicode: U
考虑这个程序:
import java.util.regex.Pattern;
public class xx {

    /*
     *  ?
     *  LATIN CAPITAL LETTER N WITH TILDE
     *  Unicode: U+00D1,UTF-8: C3 91
     */
    public static final String BIG_N = "u00d1";

    /*
     *  ?
     *  LATIN SMALL LETTER N WITH TILDE
     *  Unicode: U+00F1,UTF-8: C3 B1
     */
    public static final String LITTLE_N = "u00f1";

    public static void main(String[] args) throws Exception {
        System.out.println(BIG_N.equalsIgnoreCase(LITTLE_N));
        System.out.println(Pattern.compile(BIG_N,Pattern.CASE_INSENSITIVE).matcher(LITTLE_N).matches());
    }
}

由于?是?的大写版本,您可以期望打印:

true
true

但它实际打印(java 1.7.0_17-b02)是:

true
false

为什么?

解决方法

By default,case-insensitive matching assumes that only characters in the US-ASCII charset are being matched. Unicode-aware case-insensitive matching can be enabled by specifying the UNICODE_CASE flag in conjunction with this flag.

http://docs.oracle.com/javase/7/docs/api/java/util/regex/Pattern.html#CASE_INSENSITIVE

为了完整;你或(|)旗帜在一起.

Pattern.compile(BIG_N,Pattern.CASE_INSENSITIVE | Pattern.UNICODE_CASE)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读