侧边栏壁纸
博主头像
Epoch

Java开发、Python爬虫、微服务、分布式、前端

  • 累计撰写 93 篇文章
  • 累计创建 110 个标签
  • 累计收到 8 条评论

目 录CONTENT

文章目录

正则表达式(详细教程)

Epoch
2021-01-27 / 0 评论 / 0 点赞 / 317 阅读 / 868 字 / 正在检测是否收录...

一丶字符匹配范文

可能编排显示混乱,可以看图
214E3628-D4F5-4287-AD5B-649E1EB45C4F.png

正则表达式 说明 正确 错误
A 精确匹配单个字符 A a
x|y 允许出现的两个字符 y n
[xyz] 字符集合,允许出现集合内任意单个字符 z c
[a-z]
[A-Z]
[0-9]
字符范围 a
D
8
A
a
A
[^xyz]
[0-9]
集合内字符不允许出现 0
A
y
8

例题

1.精准匹配字符串“Hello” 或者“Hallo”

H[ae]llo

2.匹配数字范围(0570-0579)

057[0-9]

3.单选题只允许输入ABCD其中一项

[ABCD]

二丶元字符

正则表达式 说明 正确 错误
\d 匹配任意单个数字 8 i
\D 匹配\d规则之外的任意单个字符 i 8
\w 匹配任意单个字母数字下划线 Y &
\W 匹配\w之外的任意单个字符 & Y
\s 匹配单个空格 x
\n 匹配单个换行符
x
. 匹配任意单个字符(换行符除外)
\. 特殊字符,只匹配. . 1

例题

1.匹配数字(3213.383219)

\d\d\d\d\.\d\d\d\d\d\d

2.匹配杭州与宁波座机号码(0571|0574-xxxxxxxx)

057[1|4]-/d/d/d/d/d/d/d/d

3.请匹配18位身份证号

[12345678]\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d\d[0-9xX]

三丶多次重复匹配

正则表达式 说明 正确 错误
A 精准N次匹配 AAA AA
A 最少出现N次 AAA
AAAA
AA
\d 约定出现最少次数与最大次数 1234 12
\d* 可以出现零次至无限次,相当于 1234
\d+ 最少出现一次,相当于 12
\d? 最多出现一次,相当于 1 12

例题

1.验证短信验证码(6位数字)

\d{6}

2.匹配全国座机号(区号3或4位-电话号码7或8位)

\d{3,4}-\d{7,8}

3.匹配英文姓名(例如:James Watson)

[A-Z]{1}[a-z]{1,}\s[A-Z]{1}[a-z]{1,}

四丶定位匹配

正则表达式 说明 正确 错误
^A.* 头匹配 ABC CBA
.*A$ 尾匹配 CBA ABC
^A.*A$ 全字匹配(头尾匹配) ACCCA ACCCB

五丶贪婪模式

解释:

1.在满足条件的情况下尽可能多匹配到字符串

示例 : 111222333    正则: \d{6,8}
匹配结果: 11122233

六丶非贪婪模式

解释:

1.在满足条件的情况下尽可能少匹配到字符串

示例 : 111222333    正则: \d{6,8}?     使用? 表示使用非贪婪模式

匹配结果:111222

简单使用案例:

例如我们需要提取标签中的href中的超链接

<a href="http://www.baidu.com">百度</a><a href="http://mail.163.com">网易邮箱</a>
正则表达式: ".*"  错误
		   ".?"  正确

七丶表达式分组

解释:
    分组将"正则"分组为多个子表达式
    
示例: abababcdcdcd

正则表达式: (ab){3}(cd){3}

例题

1.匹配验证码(4位或者6位)

例如匹配  7777
^\d{4}$

匹配 4或6位需要分组
(^\d{4}$)|(^\d{6}$)

2.匹配车牌号(冀A-U888G)

^[冀黑粤晋][A-Z]-[A-Z0-9]{5}$
^([冀黑粤晋][A-Z])-([A-Z0-9]{5})$

3.匹配中文或英文姓名

例如匹配Michael Jackson

^[A-Z][a-z]+\x[A-Z][a-z]*$

匹配中文张三
^[\u4e00-\u9fa5]{2,8}$

分组后
(^[A-Z][a-z]+\x[A-Z][a-z]*$)|(^[\u4e00-\u9fa5]{2,8}$)
0

评论区