一个正则表达式

^/(?i:(?:security|phpmyadmin|licenses|webalizer|server-status|server-info))
请问这个正则表达式 ?i: 是什么意思

启用不区分大小写的匹配

?! 表示顺序否定环视,也就是所谓的匹配字符的右边。
那么 (?!:) 代表的意思就是 匹配字符的右边不为冒号。

相同的还有 ?<! 逆序否定环视,即匹配的左边不为指定字符
?= 顺序环视
?<= 逆序环视

至于你给的表达式里的 ?: 则指的是忽略捕获组。也就是忽略(security|phpmyadmin|licenses|webalizer|server-status|server-info)这个捕获。

给你个JAVA应用实例吧。供你参考下。
[code="java"]/**

  • 正则表达式字符串类
  • @author Administrator
  • */
    public final class PatternStrings {
    private PatternStrings() {
    }

    /**

    • 匹配右边为逗号或者字符结尾(?=,|$),左边为最少一个字母(?<=[a-zA-Z]+)的位置
    • / public static final String REGEX1 = "(?<=\b[a-zA-Z]+)\s(?=,|$)";

    /**

    • 匹配左(?<!')右(?!')不为分号且右边一位为逗号或者字符窜结尾(?=,|$)的单词,单词左右可以存在空格。
    • / public static final String REGEX2 = "\b(?<!')\s[a-zA-Z]+\s*(?!')(?=,|$)";

    /**

    • 匹配左(?<!')右(?!')不为分号且右边一位为逗号或者字符窜结尾(?=,|$)的单词,单词左右可以存在空格.

    • 与PatternStrings.REGEX2相同,但配置了捕获组(\s*[a-zA-Z]+\s*)
    • / public static final String REGEX3 = "\b(?<!')(\s[a-zA-Z]+\s*)(?!')(?=,|$)";

    public static void main(String args[]) {
    String string = "b,3d, ,a3,t3ad,'23',3,'tt', xm,xbm , sfzh ,rxny";
    System.out.println("string-> " + string);
    System.out.println("regex1-> "
    + string.replaceAll(PatternStrings.REGEX2, "?"));
    System.out.println("regex2-> "
    + string.replaceAll(PatternStrings.REGEX3, "$1 = ? "));// $1代表第一个捕获组
    System.out.println("regex3-> "
    + string.replaceAll(PatternStrings.REGEX1, " = ? "));
    }
    }[/code]