文章字数:611,阅读全文大约需要2分钟
正则规则
- 任意字符可以表示匹配自身
[]
代表匹配其中之一,如[abc]
。意思是a,b,c任意一个都能满足。[1-9]/[a-z]
是简写,代表1-9个数字,a-z的字母。^
在括号外代表开头,如^a
,代表a开头的。括号内代表非,如[^abc]
代表除了abc的任意字符.
表示任意字符\d
数字\D
非数字\s
空字符,等于[\t\n\r\x\f]
\S
非空字符,等于[^\s]
\w
字母,数字,下划线,等于[a-zA-Z0-9_]
\W
非字母,数字,下划线?
表示前一个元素出现0次或1次+
表示前一个元素出现1次以上*
表示前一个元素出现任意次{n}
表示前一个元素出现n次{n,m}
表示前一个元素出现n-m次{n,}
表示前一个元素出现n或n以上- 正则的两个元素的排列就是需要匹配的顺序,比如
\d\s
就是数字后面必须跟着非数字 a|b
匹配a或者b(子表达式)
将内部当成一个原子整体。比如([1-9][a-z])+
,代表数字和小写字母的组合出现一次以上。
检测字符串是否匹配正则
基本用法
1
2
3
4
5
6
7
8
9
10// 源字符串
String str = "123";
// 正则表达式
String regex = "^[1-9]+";
// 用正则创建Pattern对象,此对象就是正则表达式的对象,如果需要对此匹配,可以将此对象保存,避免重复创建。
Pattern p = Pattern.compile(regex);
// 检测字符串是否符合正则规则
Matcher m = p.matcher(str);
// 返回结果
boolean res = m.matches();使用Pattern类封装好的方法
1
2
3String str = "123";
String regex = "^[1-9]+";
boolean res = Pattern.matches(regex, str);使用String类封装好的方法
1
2
3String str = "123";
String regex = "^[1-9]+";
boolean res = str.matches(regex);
正则替换
1 | String str = "123abc"; |
正则切割
1 | String str = "123a33b55h"; |
正则查找
1 | import java.util.regex.Matcher; |