正则表达式

描述的是一个规则,匹配一类字符串

1. 示例

[Ji]ava.+

匹配第一个字母是J或j,接下来三个三个字母是ava,其余部分由一个或多个任意的字符构成

[Jj], [0-9] 表示一个范围,所有Unicode值落在两个边界范围内的字符

[^] 表示补集

2. 转义字符

符号 描述
\n 换行符
\t 制表符
\\ \
\^,\$,\.,\(,\),\{,\},\?,\+,\-,\[,\],| 匹配\后字符本身

3. 标准字符

字符 描述
\d 0-9数字
\w 字母,数字,下划线 A-Z,a-z,0-9
\s 空格,制表符,换行符等空白字符的其中任意一个
. 任意字符

4. [] 内任意字符

字符 描述
[ab5@] 匹配 a或b或c或5或@
[^abc] a,b,c以外的任意字符
[f-k] f-k之间的任意字母
[^A-F0-3] A-F,0-3之外的任意字符

包含在中括号中的特殊符号会失去特殊意义,除了^,-之外。

[\d.\-+]表示数字,小数点,-,+

5. 量词

字符 描述
{n} 表达式重复n次
{m,n} 重复至少m次,至多n次
{m,} 重复至少m次
? 0次或1次,{0,1}
+ 至少1次,{1,}
* 不出现或出现任意次,{0,}

6. 字符边界

字符 描述
^ 与字符串开始的地方匹配
$ 与字符串结束的地方匹配
\b 匹配一个单词边界, (前面的字符和后面的字符不全是\w)

7. 选择符和分组

字符 描述
| 两个表达式之间关系
() 括号内的表达式可以作为整体被修饰,()\1表示捕获的整体作为匹配模式 go gogo
(?:表达式) 抵消()带来的作用

8. 预搜索-零宽断言

字符 描述
(?=exp) 断言后匹配exp
[a-z]+(?:\d)
go222 222本身不计入匹配
(?<=exp) 断言前匹配exp
(?!exp) 断言后不匹配exp
(?<!exp) 断言前不匹配exp

9. 常用表达

9.1. 电话号码

1
2
0\d{2-3}-\d{7,9}
1[356789]\d{11}

9.2. 邮箱

1
2
3
4
12334@qq.com
234@sina.com.cn

[\w\-]+@[A-Za-z0-9]+(\.[A-Za-z]{2,3}){1,2}

10. java中使用

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
import java.util.regex.Matcher;
import java.util.regex.Pattern;

Pattern pattern = Pattern.compile("\\d");

Matcher matcher = pattern.matcher("aw");

boolean flag =matcher.matches();
System.out.println(flag); //false

//尝试获取下一个匹配,找到则为true
boolean bool = matcher.find();

//返回匹配的子字符串
String str = matcher.group(0);

//将匹配的字符串替换为#
String str = matcher.replaceAll("#");

//惰性获取
//用正则表达式匹配边界,将输入字符串分割成字符串数组
Stream<String> stream = pattern.splitAsStream("输入字符串");
本文结束  感谢您的阅读
  • 本文作者: Wang Ting
  • 本文链接: /zh-CN/2020/02/08/正则表达式/
  • 发布时间: 2020-02-08 23:04
  • 更新时间: 2021-10-29 13:58
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!