代码之家  ›  专栏  ›  技术社区  ›  The Gilbert Arenas Dagger iainpb

Java正则表达式-什么?我:意思是?

  •  1
  • The Gilbert Arenas Dagger iainpb  · 技术社区  · 5 年前

    我遇到了Java代码编写的下列条件:

        String pattern = "(?i:U[A-Z0-9]C.*)";
        if (foo.matches(pattern))) {
        ...
    

    我不明白 ?i: 手段。我见过 (?i) 用于表示大小写不敏感,但不确定此处的形式。

    谢谢你的帮助!

    1 回复  |  直到 5 年前
        1
  •  5
  •   Andreas LppEdd    5 年前

    在雅瓦多 Pattern ,其定义如下:

    (?idmsuxU-idmsuxU) -什么都没有,但会转换匹配标志 i d m s u x U 通断

    (?idmsux-idmsux:X) -x,作为具有给定标志的非捕获组 D S U X 通断

    反之 (?i) 翻旗 CASE_INSENSITIVE 对于regex模式的其余部分, (?i:X) 只为打开标志 X .

    例如,这些是相同的:

    Foo(?i)Bar(?-i)Baz
    Foo(?i:Bar)Baz
    

    还要注意javadoc中的以下注释:

    在Perl中,表达式顶层的嵌入标志会影响整个表达式。在这个类中,嵌入的标志总是在它们出现的时候生效,不管它们是在顶层还是在一个组中;在后一种情况下,标志在组的末尾被还原,就像在Perl中一样。