目录
正则表达式:
操作字符串的一种规则,使用了特殊的符号表示
符号:
边界匹配器
- ^ 匹配输入字符串的开始位置。
- $ 匹配输入字符串的结束位置
- \b 只是代表了单词的开始或结束部分,不匹配任何字符
预定义字符类 \
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
注意:任何预定义字符没有加上数量词之前只能匹配一个字符
范围 [ ]
范围里 ^ 表示 非
[abc] a、b 或 c(简单类)
[^abc] 任何字符,除了 a、b 或 c(否定)
[a-zA-Z] a 到 z 或 A 到 Z,两头的字母包括在内(范围)
[a-d[m-p]] a 到 d 或 m 到 p:[a-dm-p](并集)
[a-z&&[def]] d、e 或 f(交集)
注意:没有数量词也只能匹配一个字符
数量 { }
Greedy
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好n次
X{n,} X,至少n次
X{n,m} X,至少n次,但是不超过m次
子表达式 ()
预查
用来检查接下来的出现的是不是某个特定的字符集
(?:pattern) 非获取匹配
(?=pattern) 肯定预查 :后面是pattern
(?!pattern) 否定预查:后面不是pattern
(?<=pattern) 反向肯定预查:前面是pattern
(?<!pattern) 反向否定预查:前面不是pattern
常用
密码设置6-12位,须包含字母、数字或特殊符号中的2种
^(?![A-Za-z]+$)(?!\\d+$)(?![\\W_]+$)\\S{6,12}$
应用:
匹配 :
matches(String regex) 当且仅当字符串指定的正则表达式匹配返回true
切割:
split()
String[] arr = str.split(" +"); \\根据空格进行切割
String[] arr = str.split("(.)\\1+"); \\根据重叠词进行切割
替换 :
replaceAll(String regex, String replacement)
String[] arr = str.replaceAll("(.)\\1+","$1"); \\把重叠词替换单个词
在replaceAll方法正则的外部引用组的内容要使用"
$组号"
查找 :
- Pattern(正则对象)
- Matcher(匹配器对象)
- find() 通知匹配器去匹配字符串,查找符合规则的字符串。返回true,false
- group() 获取符合规则的子串(在使用group方法之前,必须要先用find方法查找,否则报错)
Pattern p = Pattern.compile("正则表达式"); \\字符串的正则编译成Pattern对象
Matcher m = p.matcher("aaaaab"); \\使用正则对象匹配字符串产生一个Matcher对象
boolean b = m.matches();