Java 正则表达式-字符匹配符

时间:2024-02-20 11:58:47
符号 描述 示例 解释
[] 可接收的字符列表 [efgh] 匹配e、f、g、h中的任意1个字符
[^] 不接收的字符列表 [^abc] 除了a、b、c以外的任意1个字符,包括数字和特殊符号
- 连续字符 A-Z 任意一个大写字母
. 匹配除\n 以外的任何字符 a..b 以a开头,b结尾,中间有两个任意字符,长度为4的字符串(aaab,asdb,a*+b)
\\d 匹配单个数字字符,相当于[0-9] \\d{3(\\d)? 包含3个或4个数字的字符串(123,4528)
\\D 匹配单个非数字字符,相当于[^0-9] \\D(\\d*) 非数字开头,之后任意个数字字符串(a,A528)
\\w 匹配单个数字、大小写字母、下划线的字符,相当于[0-9a-zA-Z] \\d{3}\\w{4} 3个数字开头长度为7的数字字母字符串(235ads5,123412a)
\\W 匹配单个非数字、大小写字母、下划线的字符,相当于[^0-9a-zA-Z] \\W+\\d{2} 一个非数字字母开头,2个数字结尾的字符串(#35,$%dassd25)
\\s 匹配任何空白字符(空格、制表符等)
\\S 匹配任何非空白字符

大小写

Java正则表达式默认是区分字母大小写的,(?i) 表示编译标记。

下面几个示例实现不区分大小写:

  • (?i)abc:表示abc都不区分大小写
  • a(?i)bc:表示bc不区分大小写
  • a((?i)b)c:表示b不区分大小写
  • Pattern.CASE_INSENSITIVE :不区分大小写
public static void main(String[] args) {
    String content = "a11c8abcABC _";
    // 匹配任意一个小写字母
    String regex1 = "[a-z]";
    // 匹配任意一个大写字母
    String regex2 = "[A-Z]";
    // 匹配小写abc,必须是abc连起来才能匹配上
    String regex3 = "abc";
    // 匹配不区分大小写abc
    Pattern pattern1 = Pattern.compile(regex3, Pattern.CASE_INSENSITIVE);
    // 匹配不区分大小写abc
    String regex4 = "(?i)abc";
    // 匹配数字
    String regex5 = "[0-9]";
    String regex6 = "\\d";
    // 匹配除小写字母其他所有字符
    String regex7 = "[^a-z]";
    // 匹配abcd中任意一个字符
    String regex8 = "[abcd]";
    // 匹配数字、字母、下划线中任意一个字符
    String regex9 = "\\w";
    // 匹配空格、制表符
    String regex10 = "\\s";
    // 匹配除\n以外的所有字符,匹配.本身的话使用\\.
    String regex = ".";

    Pattern pattern = Pattern.compile(regex);
    Matcher matcher = pattern.matcher(content);
    while (matcher.find()) {
        System.out.println("截取到的字符串:" + matcher.group(0));
    }
}