正则表达式的前世今生
一、正则表达式的历史
1.开始是神经生理学中用于表达神经模型的方法
2.后应用于数学:正则集代数
3.Unix之父——丹尼斯·里奇引入计算机领域:
二、正则表达式概念:
用单个字符串描述、匹配一系列符合某个句法规则的字符串,是一门表达式语言
三、正则表达式引擎:解析正则表达式的内核
1.DFA
2.传统NFA:JAVA
3.POSIX NFA:
四、举例:匹配一个通用的URL地址
((http|https|ws|wss):\/\/)(([a-zA-Z0-9\._-]+\.[a-zA-Z]{2,6})|([0-9]{1,3}\.[0-9]{1,3}))(:[0-9]{1,5})*(\/[a-zA-Z0-9\&%_\./-]*)?
正则表达式常见使用场景
一、常见场景:
1.批量提取、替换有规律的字符串
2.在各种高级文本编辑器中的使用
3.在各类办公软件 (office等) 中使用
4.各种开发语言中的使用 (C#、Java、JS、Perl、PHP等等)
5.用户输入的合法性验证 (IP地址、特殊的订单号要求等)
6.模板引擎的标签库开发
7.网络爬虫(抓取机器人) 的开发
8.批量的文本高效处理
二、推荐常见工具
1.推荐RegexBuddy
http://www.regexbuddy.com
2.RegExBuilder
http://www.redfernplace.com/software-projects/regex-builder/
3.在线测试工具
http://tool.chinaz.com/regex/
http://regexper.com
https://www.debuggex.com
三、基础语法
1. 元字符
2.反义符(元字符大写)
3.边界符
4.转义符
5.注释
6.计量符 - 表示重复的次数
7.逻辑符(环视:匹配到最后时回顾前面的内容)
8.案例:在这段字符中匹配正则表达式:
18092700000
13384988889
13392788888
18092766666
18092766644
13313313313
I am the king of biography
throes of
11111111
12311111111
1112235111
表达式:1*
匹配得到:
表达式:133?
得到:
表达式:1{3}
得到:
表达式:1{3,}
得到:
表达式:12*
得到:
9.案例:输入一段
021-1234567
021-12345678
021-123456789
021-88888888
3344-99999999
TEL:021-123456789
表达式:\d{3}-\d{7,8}
得到:
但是,9位的也被匹配到了,前面有TEL的时候也被匹配到了
需要边界符
更正:^\d{3}-\d{7,8}$