正则表达式简单语法

正则的基本语法:

[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 空格 \n \r \t
\S 非空白字符
. 表示任意字符 但不包括: \n \r

 -- 如果要想匹配换行符或者忽略大小写

 

 剩下的可以参考 https://www.cnblogs.com/dreamer-fish/p/5282679.html

\. 只匹配真正的 .
^ 表示字符串的开头
$ 字符串的结尾

数量词:

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

 

 

posted @ 2020-05-31 17:57  可以看看你胖次吗  阅读(152)  评论(0编辑  收藏  举报
Live2D