正则表达式基础知识

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式基础知识相关的知识,希望对你有一定的参考价值。

    之前在linux中用到三剑客grep、awk、sed等,简单的接触过正则表达式,但是没有深入的了解正则表达式,又一次在python里面接触到正则表达式,所以想着尽量一次攻克正则表达式,所以就将自己学习印记留在此处,供自己复习,同时也将相关知识分享给大家。

分享几个在线测试与学习正则的地址:

(1)http://deerchao.net/tutorials/regex/regex.htm  正则表达式30分钟入门

(2)http://tool.oschina.net/regex/ 在线测试以及有部分简单示例

(3)http://tool.chinaz.com/regex/ 在线测试工具

(4)http://www.ip138.com/zhengze/ 在线测试工具  推荐

(5)http://www.kingshang.com/  在线测试工具

(6)http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html python正则表达式

(7)https://c.runoob.com/front-end/854 测试工具推荐

 这种在线测试工具随便一搜就有很多,这里只列举几个。

1、正则表达式学习引导

(1)字符串:"one1two2three3four4" 用正则处理,输出 "1234"
首先分析字符串的规律,我们发现整个字符串由字母和数字组成,而结果仅包含数字,我们则可以写成
\d{1}或者[1-9]{1}或者[1-9]都可以实现。
(2)字符串info = ‘<a href="
正则表达式为:[a-z.]*baidu[.a-z]* 和[w.]*baidu\.*\w*‘ 
匹配结果:

www.baidu.com
baidu
(3)匹配出下面字符串的所有IP地址

17-03-29来自地址:美国/加拿大 CZ88.NET IP【199.30.25.74】 的用户 查询了 IP【222.45.52.0】地址:江苏省盐城市 铁通ADSL
17-03-29来自地址:美国 加利福尼亚州玛瑞娜戴尔瑞市IANA IP【106.39.201.242】 的用户 查询了 IP【210.39.72.0】地址:广东省 深圳清华大学研究院
17-03-29来自地址:美国 CZ88.NET IP【171.106.42.113】 的用户 查询了 IP【106.0.0.0】地址:美国 加利福尼亚州玛瑞娜戴尔瑞市IANA
17-03-29来自地址:亚太地区 CZ88.NET IP【183.202.167.74】 的用户 查询了 IP【202.207.224.0】地址:山西省长治市 长治医学院
17-03-29来自地址:中国 移动 IP【111.37.0.222】 的用户 查询了 IP【210.44.128.0】地址:山东省济南市 山东财政学院
17-03-29来自地址:中国 CZ88.NET IP【180.153.214.182】 的用户 查询了 IP【123.6.0.0】地址:河南省郑州市 联通
17-03-29来自地址:CZ88.NET IP【 115.63.65.233】 的用户 查询了 IP【221.176.200.0】地址:河南省 移动
17-03-29来自地址:美国 CZ88.NET IP【157.55.39.166】 的用户 查询了 IP【217.10.244.0】地址:欧洲 CZ88.NET
正则表达式:
(1)\d*\.\d*\.\d*\.\d*  自己写的
(2)(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)\.(25[0-5]|2[0-4]\d|[0-1]\d{2}|[1-9]?\d)
第二个是在上面的工具中找的  明显比自己写的专业全面
搜索的结果:
199.30.25.74
222.45.52.0
106.39.201.242
210.39.72.0
171.106.42.113
106.0.0.0
183.202.167.74
202.207.224.0
111.37.0.222
210.44.128.0
180.153.214.182
123.6.0.0
115.63.65.233
221.176.200.0
157.55.39.166
217.10.244.0

    经过上面的三个小测试,发现正则表达式确实是一个很好玩的东西,也确实也有一定的难度,实现的方法和语法有多种,但是新手难以保证你的防范就是最全面的最准确的,需要多加练习才能熟练掌握。

2、正则表达式基本语法介绍

   正则表达式主要包含普通字符(大小写字母数字等)和元字符(特殊符号等)等内容。接下来介绍相关的基础知识。

技术分享

说明正则表达式
网址(URL)[a-zA-z]+://[^\s]*
IP地址(IP Address)((2[0-4]\d|25[0-5]|[01]?\d\d?)\.){3}(2[0-4]\d|25[0-5]|[01]?\d\d?)
电子邮件(Email)\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
QQ号码[1-9]\d{4,}
html标记(包含内容或自闭合)<(.*)(.*)>.*<\/\1>|<(.*) \/>
密码(由数字/大写字母/小写字母/标点符号组成,四种都必有,8位以上)(?=^.{8,}$)(?=.*\d)(?=.*\W+)(?=.*[A-Z])(?=.*[a-z])(?!.*\n).*$
日期(年-月-日)(\d{4}|\d{2})-((1[0-2])|(0?[1-9]))-(([12][0-9])|(3[01])|(0?[1-9]))
日期(月/日/年)((1[0-2])|(0?[1-9]))/(([12][0-9])|(3[01])|(0?[1-9]))/(\d{4}|\d{2})
时间(小时:分钟, 24小时制)((1|0?)[0-9]|2[0-3]):([0-5][0-9])
汉字(字符)[\u4e00-\u9fa5]
中文及全角标点符号(字符)[\u3000-\u301e\ufe10-\ufe19\ufe30-\ufe44\ufe50-\ufe6b\uff01-\uffee]
中国大陆固定电话号码(\d{4}-|\d{3}-)?(\d{8}|\d{7})
中国大陆手机号码1\d{10}
中国大陆邮政编码[1-9]\d{5}
中国大陆身份证号(15位或18位)\d{15}(\d\d[0-9xX])?
非负整数(正整数或零)\d+
正整数[0-9]*[1-9][0-9]*
负整数-[0-9]*[1-9][0-9]*
整数-?\d+
小数(-?\d+)(\.\d+)?
不包含abc的单词\b((?!abc)\w)+\b


以上是关于正则表达式基础知识的主要内容,如果未能解决你的问题,请参考以下文章

python基础学习(十三)

text 正则表达式片段

markdown 正则表达式模式片段

python基础学习笔记(十三)

正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性

循环通过 python 正则表达式匹配