之前在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
2
3
|
(
1
)字符串:
"one1two2three3four4"
用正则处理,输出
"1234"
首先分析字符串的规律,我们发现整个字符串由字母和数字组成,而结果仅包含数字,我们则可以写成
\d{
1
}或者[
1
-
9
]{
1
}或者[
1
-
9
]都可以实现。
|
1
2
3
4
5
6
|
(
2
)字符串info
=
'<a href
=
"
正则表达式为:[a
-
z.]
*
baidu[.a
-
z]
*
和[w.]
*
baidu\.
*
\w
*
'
匹配结果:
www.baidu.com
baidu
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
(
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 |
本文转自 tianya1993 51CTO博客,原文链接:http://blog.51cto.com/dreamlinux/1911932,如需转载请自行联系原作者