1.String 的.matches(regex)方法
2.Pattern类
//1.输入正则表达式
Pattern pattern=Pattern.compile(compile);
//2.要匹配的字符
Matcher matcher=pattern.matcher(match);
//3.比较或查找
matcher.matches();
matcher.find();
2.正则表达式
2.1 String 对正则表达式的支持,重点掌握如下3个方法:
matches() 匹配正则表达式
split() 切分字符串为字符串数组
replaceAll()
2.2常用匹配符
1.边界匹配器
^ 行的开头
$ 行的结尾
\b 单词边界
\B 非单词边界
\A 输入的开头
\G 上一个匹配的结尾
\Z 输入的结尾,仅用于最后的结束符(如果有的话)
\z 输入的结尾
2.字符类
[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](减去)
3.预定义字符类
. 任何字符(与行结束符可能匹配也可能不匹配)
\d 数字:[0-9]
\D 非数字: [^0-9]
\s 空白字符:[ \t\n\x0B\f\r]
\S 非空白字符:[^\s]
\w 单词字符:[a-zA-Z_0-9]
\W 非单词字符:[^\w]
4.1 Greedy 数量词 (贪婪)
X? X,一次或一次也没有
X* X,零次或多次
X+ X,一次或多次
X{n} X,恰好 n 次
X{n,} X,至少 n 次
X{n,m} X,至少 n 次,但是不超过 m 次
4.2 Reluctant 数量词 (懒惰)
X?? X,一次或一次也没有
X*? X,零次或多次
X+? X,一次或多次
X{n}? X,恰好 n 次
X{n,}? X,至少 n 次
X{n,m}? X,至少 n 次,但是不超过 m 次
4.3 Possessive 数量词 (强占)
X?+ X,一次或一次也没有
X*+ X,零次或多次
X++ X,一次或多次
X{n}+ X,恰好 n 次
X{n,}+ X,至少 n 次
X{n,m}+ X,至少 n 次,但是不超过 m 次
看下面这段代码:
----------------------------------------------------------------------------------------------------------------------------------------
String p="df.*g";//贪婪匹配输出dfsgdfegdcfg
String p2="df.*?g";//懒惰匹配输出dfsg和 dfeg
String p3="df.*+g";//强占模式无输出,匹配不到
//1.输入正则表达式
// Pattern pattern=Pattern.compile(p);
// Pattern pattern=Pattern.compile(p2);
Pattern pattern=Pattern.compile(p3);
//2.要匹配的字符
Matcher matcher=pattern.matcher(match5);
while(matcher.find()){
System.out.println(matcher.group());
}
----------------------------------------------------------------------------------------------------------------------------------------------
重点注意:在java中使用正则表达式的时候,要注意“\”的转义,例如我要匹配$,则要写\$,匹配{则要用\{
下面列几个常用匹配:
1.匹配qq邮箱
[a-zA-Z0-9]+@(qq|QQ).com
2.匹配主机号
^([1-9]|[1-9]\\d{1,3}|[1-6][0-5][0-5][0-2][0-9]|[1-6][0-5][0-5]3[0-5])$
3.匹配端口号0~65535<br>
(^[0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\\.([0-9]|[1-9]\\d{0,1}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])