正则表达式简单语法

正则的基本语法:

[ab] a或者b
[a-z] 所有的小写字母
[a-zA-Z0-9_] 数字字母下划线
[^a] 非字符a
[^ab] 非字符a和非字符b
注意: ^只有在[]内部才表示非, 如果不是在内部表示字符开头
d 表示数字 等价于 [0-9] (digital)
D 表示非数字 等级于[^0-9]
w 表示单词字符串 数字字母下划线 等价于 [a-zA-Z0-9_] (word)
W 表示非单词字符 等价于 [^a-zA-Z0-9_]
s 表示空白字符 space 空格
S 非空白字符
. 表示任意字符 但不包括:
. 只匹配真正的 .
^ 表示字符串的开头
$ 字符串的结尾

数量词:

a{m} 正好m个a
a{m,} 至少m个a
a{m,n} 至少m个a, 至多n个 大于等于m小于等于n
a+ 表示至少一个 等价于 a{1,}
a* 表示至少0个 a{0,}
a? 要么0个要么1个 a{0,1}


捕获组:

()捕获组 -》划分界限
String s = "lzc@atguigu.com.cn";
boolean result = s.matches("\w{3,15}@\S+\.(com|cn|edu|org|com\.cn)");

经典应用:

隐藏手机号

String s = "18603071634";
System.out.println(s.replaceAll("(\d{3})(\d{4})(\d{4})", "$1****$3"));
//186****1634

todo

在java的字符串的方法中, 有4个方法是直接支持正则表达式
  match
  replaceAll
  replaceFirst
  split

 其他方法使用参考https://www.jb51.net/article/72081.htm

 

 

原文地址:https://www.cnblogs.com/yangxusun9/p/13020204.html