正则表达式小结
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式小结相关的知识,希望对你有一定的参考价值。
规则汇总:
# 正则表达式 ‘‘‘ 用于处理字符串的强大工具 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+)*
以上是关于正则表达式小结的主要内容,如果未能解决你的问题,请参考以下文章