正则表达式小结
规则汇总:
# 正则表达式
'''
用于处理字符串的强大工具
Python的re模块拥有全部的正则表达式的功能
python中的正则表达式是一个特殊的字符序列,
检查一个字符串是否与某种模式匹配
'''
# 元字符 :
# . ^ $ * + ? {} [] \ | ()
'''
大多数字母和字符会匹配它们自身,
有少数特殊字符我们称为元字符,
它们不能匹配自身,它们定义了字符类、
子组匹配和模式重复次数等
。
'''
# 元字符的使用
'''
. 匹配除换行符之外的所有的字符
\d 匹配0~9的数字
\s 匹配任意的空白符,包括空格,制表符(Tab),换行符等
\w 匹配字母或数字或下划线或汉字等
\b 表示单词的边界
^ 脱字符,匹配输入字符串的开始的位置
$ 匹配输入字符串的结束位置
解除元字符的特殊功能例
\. 表示匹配点号本身
\D、\S、\W、\B是与小写的相反的作用
'''
# 匹配次数
'''
{M,N} M和N 为非负整数,其中M<=N 表示前面的匹配M~N次
{M,} 表示需要匹配M次
{,N} 等价于{0~N}
{N} 表示需要匹配N次
* 匹配前面的子表达式零次或多次,等价于{0,}
+ 匹配前面的子表达式一次或多次,等价于{1,}
? 匹配前面的子表达式零次或一次,等价于{0,1}
注:*?、+?、{n,m}? 贪婪与懒惰
'''
# 子组匹配
'''
[ ] 字符类,将要匹配的一类字符集放在[]里面
例如:
[ . ? * ( ) {} ] 匹配里面的这些符号
[0-9] 匹配0到9的数字相当于\d
[^\d] 匹配除数字以外的字符,相当于\D
[a-z] 匹配所有的小写字母
[^a-z] 匹配非小写字母
| 相当于或(or)分支条件
例如:
A | B 匹配字母A或者B 与[AB]是一样的
'''
# 分组
'''
() 分组,将要匹配的一类字符集放在()组成一个小组
例如:
(\d){3} 匹配一个三位数
a(bc)*匹配一个a和0个或多个bc
a(b|c) 匹配ab或者ac
'''
# re模块
'''
re.compile() 编译正则表达式为模式对象
re模块的常用方法
match()
判断一个正则表达式是否从开始处匹配字符串
search() 遍历字符串,找到正则表达式匹配的第一个位置
findall() 遍历字符串,找到正则表达式匹配的所有位置并
以列表的形式返回
查看匹配对象中的信息
group() 返回匹配到的字符串
star()返回匹配的开始位置
end()返回匹配的结束位置
span() 返回一个元组表示匹配位置(开始,结束)
'''
常用的正则表达式小结如下:
非负整数:^\d+$
正整数:^[0-9]*[1-9][0-9]*$
非正整数:^((-\d+)|(0+))$
负整数:^-[0-9]*[1-9][0-9]*$
整数:^-?\d+$
非负浮点数:^\d+(\.\d+)?$
正浮点数 : ^((0-9)+\.[0-9]*[1-9][0-9]*)|([0-9]*[1-9][0-9]*\.[0-9]+)|([0-9]*[1-9][0-9]*)$
非正浮点数:^((-\d+\.\d+)?)|(0+(\.0+)?))$
负浮点数:^(-((正浮点数正则式)))$
英文字符串:^[A-Za-z]+$
英文大写串:^[A-Z]+$
英文小写串:^[a-z]+$
英文字符数字串:^[A-Za-z0-9]+$
英数字加下划线串:^\w+$
E-mail地址:^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$
URL:^[a-zA-Z]+://(\w+(-\w+)*)(\.(\w+(-\w+)*))*(\?\s*)?$
或:^http:\/\/[A-Za-z0-9]+\.[A-Za-z0-9]+[\/=\?%\-&_~`@[\]\':+!]*([^<>\"\"])*$
邮政编码:^[1-9]\d{5}$
中文:^[\u0391-\uFFE5]+$
电话号码:^((\(\d{2,3}\))|(\d{3}\-))?(\(0\d{2,3}\)|0\d{2,3}-)?[1-9]\d{6,7}(\-\d{1,4})?$
手机号码:^((\(\d{2,3}\))|(\d{3}\-))?13\d{9}$
双字节字符(包括汉字在内):^\x00-\xff
匹配首尾空格:(^\s*)|(\s*$)(像vbscript那样的trim函数)
匹配HTML标记:<(.*)>.*<\/\1>|<(.*) \/>
匹配空行:\n[\s| ]*\r
提取信息中的网络链接:(h|H)(r|R)(e|E)(f|F) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的邮件地址:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
提取信息中的图片链接:(s|S)(r|R)(c|C) *= *('|")?(\w|\\|\/|\.)+('|"| *|>)?
提取信息中的IP地址:(\d+)\.(\d+)\.(\d+)\.(\d+)
提取信息中的中国手机号码:(86)*0*13\d{9}
提取信息中的中国固定电话号码:(\(\d{3,4}\)|\d{3,4}-|\s)?\d{8}
提取信息中的中国电话号码(包括移动和固定电话):(\(\d{3,4}\)|\d{3,4}-|\s)?\d{7,14}
提取信息中的中国邮政编码:[1-9]{1}(\d+){5}
提取信息中的浮点数(即小数):(-?\d*)\.?\d+
提取信息中的任何数字 :(-?\d*)(\.\d+)?
IP:(\d+)\.(\d+)\.(\d+)\.(\d+)
电话区号:/^0\d{2,3}$/
腾讯QQ号:^[1-9]*[1-9][0-9]*$
帐号(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
中文、英文、数字及下划线:^[\u4e00-\u9fa5_a-zA-Z0-9]+$
匹配中文字符的正则表达式: [\u4e00-\u9fa5]
匹配双字节字符(包括汉字在内):[^\x00-\xff]
匹配空行的正则表达式:\n[\s| ]*\r
匹配HTML标记的正则表达式:/<(.*)>.*<\/\1>|<(.*) \/>/
sql语句:^(select|drop|delete|create|update|insert).*$
匹配首尾空格的正则表达式:(^\s*)|(\s*$)
匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
浙公网安备 33010602011771号