开启掘金成长之旅!这是我参与「掘金日新计划 · 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]"
//String regStr = "[A-Z]"
//String regStr = "abc"
//String regStr = "(?i)abc"
//String regStr = "[0-9]"
//String regStr = "[^a-z]"
//String regStr = "[^0-9]"
//String regStr = "[abcd]"
//String regStr = "\\D"
//String regStr = "\\w"
//String regStr = "\\W"
//\\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))
}
}
}
元字符-选择匹配符
在匹配某个字符串的时候是选择性的。即:既可以匹配这个,也可以匹配那个,只是需要用到选择匹配符 |
| 符号 | 符号 | 示例 | 解释 |
|---|
| | 匹配“ | ”之前或之后的表达式 | ab | cd | ab或者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);
Matcher matcher = pattern.matcher(content);
while (matcher.find()) {
System.out.println("找到 " + matcher.group(0));
}
}
}