正则表达式
一、常用符号定义
字符类
[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(交集)
[a-z&&[^bc]]
a到 z,除了 b 和 c:[ad-z](减去)
[a-z&&[^m-p]]
a到 z,而非 m 到 p:[a-lq-z](减去)
预定义字符类
.
任何字符(与行结束符可能匹配也可能不匹配)
\d
数字:[0-9]
\D
非数字: [^0-9]
\s
空白字符:[ \t\n\x0B\f\r]
\S
非空白字符:[^\s]
\w
单词字符:[a-zA-Z_0-9]
\W
非单词字符:[^\w]
POSIX 字符类(仅 US-ASCII)
\p{Lower}
小写字母字符:[a-z]
\p{Upper}
大写字母字符:[A-Z]
\p{ASCII}
所有 ASCII:[\x00-\x7F]
\p{Alpha}
字母字符:[\p{Lower}\p{Upper}]
\p{Digit}
十进制数字:[0-9]
\p{Alnum}
字母数字字符:[\p{Alpha}\p{Digit}]
\p{Punct}
标点符号:!"#$%&'()*+,-./:;<=>?@[\]^_`{|}~
\p{Graph}
可见字符:[\p{Alnum}\p{Punct}]
\p{Print}
可打印字符:[\p{Graph}\x20]
\p{Blank}
空格或制表符:[ \t]
\p{Cntrl}
控制字符:[\x00-\x1F\x7F]
\p{XDigit}
十六进制数字:[0-9a-fA-F]
\p{Space}
空白字符:[ \t\n\x0B\f\r]
X?
X,一次或一次也没有
X*
X,零次或多次
X+
X,一次或多次
X{n}
X,恰好 n 次
X{n,}
X,至少 n 次
X{n,m}
X,至少 n 次,但是不超过 m 次
二 正则使用
1、如果只想知道该字符串是否对错 匹配
//匹配手机号
public static void matcherMobilePhone(String phone){ //13XXX 15XXX 18XXX String regEx ="1[3,5,8]\\d{9}"; System.out.println(phone+":"+phone.matches(regEx)); }
2、如果想要将已有的字符串编程另一个字符串 替换
//将重叠字符替换成单个字符
public static void replaceReduplicationWithSingleWord(String str){
String regex = "(.)\\1+";
System.out.println(str.replaceAll(regex, "$1"));//$在正则表达式中是特殊符号,用来取组
}
3、如果想要按照自定的方式将字符串编程多个字符串 切割
//按照叠词分割
public static void splitByReduplication(String str){
String regex = "(.)\\1+";
String [] arr = str.split(regex);
for(String s:arr){
System.out.println(s);
}
}
4、想要拿到符合需求的字符串字串 获取
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/*
需求:将字符串中符合规则的字串取出
步骤
1、将正则表达式封装成对象
2、让正则对象和要操作的字符串相关联
3、关联后,获取正则匹配引擎
4、通过引擎对符合规则的字串进行操作,比如取出
*/
public class GetTest { public static void main(String[] args) { String str = "ming tian jiu yao fang jia le , wo men hen gao xing"; String regex = "\\b[a-zA-Z]{3}\\b";//取出字符串中3个连续字符的拼音 Pattern p = Pattern.compile(regex); Matcher m = p.matcher(str); while(m.find()){ System.out.println(m.start()+"..."+m.end()); System.out.println(m.group()); //提取组中内容 } } }
正则表达式能够将复杂的字符处理简单化,但要完全掌握平时需要多练习。

浙公网安备 33010602011771号