正则表达式小结

规则汇总:

# 正则表达式
'''
 用于处理字符串的强大工具
 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+)*

 

posted @ 2017-04-24 14:38  kindnull  阅读(119)  评论(0编辑  收藏  举报