在java.util.regex.Pattern中列出了所有的正则表达(重点)
字符类
1 | [abc] | a、b或c |
2 | [^abc] | 任何字符、除了a、b和c |
3 | [a-zA-Z] | 大小写字母 |
4 | [a-d[m-p]] | a到d或m到p |
预定义字符类
1 | \d | 数字 |
2 | \D | 非数字 |
3 | \s | 空白字符 |
4 | \S | 非空白字符 |
5 | \w | 单词字符[a-zA-Z_0-9] |
6 | \W | 非单词字符 |
7 | . | 任何字符 |
边界匹配器
| ^ | 行的开头 |
| $ | 行的结尾 |
数量词
1 | X? | 0或1次 |
2 | X+ | 1次或更多 |
3 | X* | 0次或更多 |
4 | X{n} | 恰好n次 |
5 | X{n,} | n次或以上 |
6 | X{m,n} | m到n次 |
Pattern类主要是负责通过Pattern.compile(Stringregex)定义正则规范,和通过split(charSwquence input)
拆分字符串的操作。(理解)
|
|
|
| Public static Pattern compile(String regex) |
|
| public Matcher matcher(CharSequence input) |
|
| public String[] split(CharSequence input) |
|
| public String pattern() |
|
例如:
public static void main(String[] args) { Pattern pat= Pattern.compile("\\d+");//定义拉一个正则规范 String str ="12dd1234hu34ij9df53yh54ij"; String[] s=pat.split(str);//按数字,拆分字符串 for(int i=0;i<s.length;++i){ System.out.print(s[i]+" "); } }
|
//结果 dd hu ij df yh ij |
java.util.regex.Matcher类主要功能是用于进行正则的匹配,通过Pattern类中定义完的正则,在使用Matcher类进行验证或者替换。(理解)
NO | 方法 | 描述 |
1 | public boolean matches() | 判断正则是否匹配 |
2 | public String replaceAll(String replace) | 正则替换成replace |
3 | public String replaceFirst(String replacement) | 正则第一个替换成replacem |
验证功能:
public static void main(String[] args) { String str ="111-22-555"; String reg="\\d{3}-\\d{2}-\\d{3}"; Pattern pat = Pattern.compile(reg); Matcher m = pat.matcher(str); if(m.matches()){ System.out.println("验证成功"); }else{ System.out.println("验证失败"); } }
|
替换功能
public static void main(String[] args) { Pattern pat= Pattern.compile("\\d+");//定义拉一个正则规范 String str ="12dd1234hu34ij9df53yh54ij"; Matcher m= pat.matcher(str); String s=m.replaceAll("*"); System.out.print(s); } } |
//*dd*hu*ij*df*yh*ij |
其实以上Pattern和Matcher的操作在String类中都存在,所以我们更多时候是用String类中的操作来完成正则。实际上在开发中我们都是用String的操作正则表达式,而不是用Pattern和Matcher类。
String类中的正则表达式支持(重点)
NO | 方法 | 描述 |
1 | public boolean matches(String regex) | 是否匹配 |
2 | public String replaceAll(String regex,String replacement) | 符合regex正则的都替换成replacement |
3 | public String replaceFirst(String regex,String replacement) | 第一个符合符合regex正则的替换成replacement |
4 | public String[] split(String regex) | 根据给定正则regex的匹配拆分此字符串 |
举例:
public static void main(String[] args) { String str="jtlyuan@126.com"; if(str.matches("\\w+@\\w+.(com|com.cn|cn|net.cn|org|edu|gov)")){ System.out.println(str+"是一个邮箱地址"); } } |