字符匹配符和选择匹配符

200 阅读3分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第32天,点击查看活动详情

元字符-字符匹配符

符号作用示例解释
[ ]可接收的字符列表[abcd]a、b、c、d中的任意一个字符
[^]不可接收的字符列表[^abc]除了a、b、c之外的任意一个字符,包括数字和特殊符号
-连字符A-Z任意单个大写字母
符号含义示例说明匹配输入
.匹配除\n以外的任何字符a..b以a开头,b结尾,中间包括2个任意字符的长度为4的字符串aaab、abcb、a12b、a*#b
\d匹配单个数字字符,相当于[0-9]\d{3}(\d)?包含3个或4个数字的字符串123、4567
\D匹配单个非数字字符,相当于[^0-9]\D(\d)*以单个非数字字符开头,后接任意个数的字符串a、A123
\w匹配单个数字,大小写字母字符,相当于[0-9  a-z  A-Z]\d{3}\\w{4}以3个数字字符开头的长度为7的数字字母字符串12345ab、789abcd
\W匹配单个非数字,大小写字母字符,相当于[^0-9  a-z  A-Z]\W+\d{2}以至少一个非数字字母字符开头,2个数字字符结尾的字符串#11、@?20

演示字符匹配符的使用

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class RegExp03 {
    public static void main(String[] args) {
        String content = "a11c8abc _ABCy @";
        //String regStr = "[a-z]";//匹配 a-z 之间任意一个字符
        //String regStr = "[A-Z]";//匹配 A-Z 之间任意一个字符
        //String regStr = "abc";//匹配 abc 字符串[默认区分大小写]
        //String regStr = "(?i)abc";//匹配 abc 字符串[不区分大小写]
        //String regStr = "[0-9]";//匹配 0-9 之间任意一个字符
        //String regStr = "[^a-z]";//匹配 不在 a-z 之间任意一个字符
        //String regStr = "[^0-9]";//匹配 不在 0-9 之间任意一个字符
        //String regStr = "[abcd]";//匹配 在 abcd 中任意一个字符
        //String regStr = "\\D";//匹配 不在 0-9 的任意一个字符
        //String regStr = "\\w";//匹配 大小写英文字母, 数字,下划线
        //String regStr = "\\W";//匹配 等价于 [^a-zA-Z0-9_]
        //\\s 匹配任何空白字符(空格,制表符等)
        //String regStr = "\\s";
        //\\S 匹配任何非空白字符 ,和\\s 刚好相反
        //String regStr = "\\S";
        //. 匹配出 \n 之外的所有字符,如果要匹配.本身则需要使用 \\. String regStr = ".";
        
        //说明
        //1. 当创建 Pattern 对象时,指定 Pattern.CASE_INSENSITIVE, 表示匹配是不区分字母大小写. Pattern pattern = Pattern.compile(regStr/*, Pattern.CASE_INSENSITIVE*/);
        Matcher matcher = pattern.matcher(content);
        
        while (matcher.find()) {
            System.out.println("找到 " + matcher.group(0));
        }
    }
}


元字符-选择匹配符

在匹配某个字符串的时候是选择性的。即:既可以匹配这个,也可以匹配那个,只是需要用到选择匹配符 |

符号符号示例解释
匹配“”之前或之后的表达式abcdab或者cd

演示选择匹配符的使用

import java.util.regex.Matcher;
import java.util.regex.Pattern;

    public class RegExp04 {
    public static void main(String[] args) {
    String content = "hanshunping 韩 寒冷";
    String regStr = "han|韩|寒";
    Pattern pattern = Pattern.compile(regStr/*, Pattern.CASE_INSENSITIVE*/);
    Matcher matcher = pattern.matcher(content);
    while (matcher.find()) {
        System.out.println("找到 " + matcher.group(0));
    }
}
}