python正则实例
# -*- coding: cp936 -*-
import re
idcardregex=r"^[1-9]\d{14}(\d{2}[0-9x])?$"
print re.search(idcardregex,"110101198001017016")!=None
print re.search(idcardregex,"1101018001017016")!=None
print re.search(idcardregex,"11010119800101701x")!=None
print "month tags:"
print re.search(r"(0?[1-9]|1[012])","11")!=None
print re.search(r"(0?[1-9]|1[012])","08")!=None
print "month:"
print re.search(r"(0?[1-9]|1[012])","11")!=None
print "day:"
print re.search(r"(0?[1-9]|[12]\d|3[01])","28")!=None
print "hour:"
print re.search(r"(0?[1-9]|[01]\d|2[0-4])","28")!=None
print "minute:"
print re.search(r"(0?[1-9]|[0-5]\d|60)","71")!=None
print "year-month-day"
print re.search(r"(\d{4})-(\d{2})-(\d{2})","2013-12-08")!=None
print re.search(r"(\d{4})-(\d{2})-(\d{2})","2013-12-08").group(0)
print re.sub(r"(\d{4})-(\d{2})-(\d{2})",r"\2/\3/\1","2013-12-08")
print re.sub(r"(\d{4})-(\d{2})-(\d{2})",r"\1年\2月\3日","2013-12-08")
print "复杂tag:"
pairedTagRegex=r"<([a-zA-Z0-9]+)(\s[^>]+)?>[\s\S]*?</\1>"
print re.search(pairedTagRegex,"<bold>text</bold>")!=None
print re.search(pairedTagRegex,"<span class=\"class1\">text</span>")!=None
print "匹配IP其中一段的表达式"
segment=r"(0{0,2}[0-9]|0?[0-9]{2}|1[0-9][0-9]|2[0-4][0-9]|25[0-5])"
print "正确的IP表达式"
ipAddressRegex=r"(" + segment + r"\.){3}" +segment
print re.search(ipAddressRegex,"54.214.20.33")!=None
nameregex=r"(?P<year>\d{4})-(?P<month>\d{2})-(?P<day>\d{2})"
result=re.search(nameregex,"2013-12-08")
print result.group("year")
print result.group("month")
print result.group("day")
print "存在(),捕获分组"
print re.findall('(\w+\.?)+','aaa.bbb.ccc')
print "不存在(),正常捕获"
print re.findall('\w+\.?','aaa.bbb.ccc.ddd')
print "边界:"
print re.findall(r"\b\w+\b","a sentence\tcontains\na lot of words")
string="tomorrow I will wear in brown standing in row 10 next to the rowdy guy"
rowWordRegex=r"\brow\b"
print "提取每行的第一个单词"
string="first line\nsecond line\r\nlast line"
lineBeginWordRegex=r"(?m)^\w+"
print re.findall(lineBeginWordRegex,string)
print "提取整段文本的第一个单词"
string="first line\nsecond line\r\nlast line"
lineBeginWordRegex=r"(?m)\A\w+"
print re.findall(lineBeginWordRegex,string)
print "匹配整段文本的最后一个单词"
stringEndWordRegex=r"\w+$"
string="some sample text"
print re.findall(stringEndWordRegex,string)
string="some sample text\n"
print re.findall(stringEndWordRegex,string)
print "匹配每行的最后一个单词"
string="first line\nsecond line\r\nlast line"
lineEndWordRegex=r"\w+(?m)$"
print re.findall(lineEndWordRegex,string)
print "只使用^和$验证6位数字字符串,可能会有漏洞"
print re.search(r"^\d{6}$","123456")!=None
print re.search(r"^\d{6}$","123456\n")!=None
print "Python不支持\z,它的\Z等价于其他语言中的\z"
print re.search(r"\A\d{6}\Z","123456")!=None
print re.search(r"\A\d{6}\Z","123456\n")!=None
plainText="line1\nline2\nline3"
print plainText
print re.sub(r"(?m)$","</p>",re.sub(r"(?m)^","<p>",plainText))
print "去除行首的空白字符"
whiteSpace=" begin\n between\t\n\nend"
beginSpaceRegex=r"(?m)^\s+"
trimmedLeadingSpace=re.sub(beginSpaceRegex,"",whiteSpace)
print trimmedLeadingSpace
print "去除行尾的空白字符"
endSpaceRegex=r"(?m)\s+$"
trimmedEndingSpace=re.sub(endSpaceRegex,"",trimmedLeadingSpace)
print trimmedEndingSpace
print "多选形式的测试,行不通"
whiteSpace=" begin\n between\t\n\nend"
spaceRegex=r"(?m)(^\s+|\s+$)"
spaceTrimmed=re.sub(spaceRegex,"",whiteSpace)
print spaceTrimmed
print "环视(?=...)肯定顺序环视,向右"
print "环视(?!...)否定顺序环视,向右"
print "环视(?<=...)肯定逆序环视,向左"
print "环视(?<!...)否定逆序环视,向左"
print "去掉中英文混排文本中不必要的空白字符"
mixedString=" 中 英文混排,some English word, 有多余的空 白字符 "
spaceBetweenChineseRegex=r"(?<![a-zA-Z])\s+(?![a-zA-Z])"
print re.sub(spaceBetweenChineseRegex,"",mixedString)
print "["+re.sub(spaceBetweenChineseRegex,"",mixedString)+"]"
negativeSpaceTrimRegex=r"(?<=[^a-zA-Z])\s+(?=[^a-zA-Z])"
print "["+re.sub(negativeSpaceTrimRegex,"",mixedString)+"]"
print "准确匹配主机名的正则表达式"
hostnameRegex=r"^(?=[-a-zA-Z]0-9.]{0,255}(?![-a-zA-Z0-9.]))((?!-)[-a-zA-Z0-9]{1,63}\.)*((?!-)[-a-zA-Z0-9]){1,63}$"
#应该匹配的
re.search(hostnameRegex,"localhost")!=None
re.search(hostnameRegex,"example.com")!=None
#不应该匹配的
#"e"*64 表示将64个"e"连接在一起组成的字符串
re.search(hostnameRegex,"-example.com")!=None
re.search(hostnameRegex,("e"*64)+".com")!=None
re.search(hostnameRegex,"e"*256)!=None
print "十六进制"
print r"[0-9a-fA-F]+"
print "MD5字符串 C37B58C783456BF879C3DD5C519195A2"
print "[0-9a-fA-F]{32}"
print "浮点数 +3.14 +0.07 3.6 -12"
print "(+?([0-9]+|[0-9]+\.[0-9]+|\.[0-9]+)|-?([0-9]+|[0-9]+\.[0-9]+))"
print "逗号分隔的整数 12,414,421 231,457,111 3,456 "
print "(?<![0-9])[0-9]{1,3}(,[0-9]{3})*(?![0-9])"
print "中午字符"
print "[\u4e00-\u9fff]"
print "中文间多余的空白字符"
print "(?<=[\u4e00-\u9fff])\s+(?=[\u4e00-\u9fff])"
print "(?<=[^\x00-\x7f])\s+(?=[^\x00-\x7f])"
print "价格 $ 46 ¥188.88 88.0 12300 "
print "[¥$]?\s*[0-9]+(\.[0-9]{2})?"
#增加断言判断之后不是数字字符
print "[¥$]?\s*[0-9]+(\.[0-9]{2})?(?![0-9]))"
print "手机号码 013801254780 +8613800113366 +86 15212124545 0086 13588887774 "
print "((0|(00|\+)86\s?)?(13[0-9]|15[0-356]|18[025-9])\d{8}"
#增加断言判断之前,之后都不是数字
print "(?<![0-9])((0|(00|\+)86\s?)?(13[0-9]|15[0-356]|18[025-9])\d{8}(?![0-9])"
print "固定电话号码 12345678 021-12345678 0731-12345678 (010)12345678 "
print "(\(?0[1-9]{2,3}\)?-?)?[1-9][0-9]\{6,7}(-[0-9]{1,6})?"
#增加断言判断之前,之后都不是数字
print "(?<![0-9])(\(?0[1-9]{2,3}\)?-?)?[1-9][0-9]\{6,7}(-[0-9]{1,6})?(?![0-9])"
print "邮政编码 100859 412000"
print "[1-9][0-9]{5}"
print "身份证号码 31010019800112071 10010019800101207x 310100800101207 "
print "[1-9][0-9]{14}([0-9]{2}[0-9xX])?"
python正则实例的更多相关文章
- Python正则简单实例分析
Python正则简单实例分析 本文实例讲述了Python正则简单用法.分享给大家供大家参考,具体如下: 悄悄打入公司内部UED的一个Python爱好者小众群,前两天一位牛人发了条消息: 小的测试题: ...
- Python爬虫实例:爬取猫眼电影——破解字体反爬
字体反爬 字体反爬也就是自定义字体反爬,通过调用自定义的字体文件来渲染网页中的文字,而网页中的文字不再是文字,而是相应的字体编码,通过复制或者简单的采集是无法采集到编码后的文字内容的. 现在貌似不少网 ...
- Python正则替换字符串函数re.sub用法示例(1)
本文实例讲述了Python正则替换字符串函数re.sub用法.分享给大家供大家参考,具体如下: python re.sub属于python正则的标准库,主要是的功能是用正则匹配要替换的字符串然后把它替 ...
- 认识python正则模块re
python正则模块re python中re中内置匹配.搜索.替换方法见博客---python附录-re.py模块源码(含re官方文档链接) 正则的应用是处理一些字符串,phthon的博文python ...
- Python正则式的基本用法
Python正则式的基本用法 1.1基本规则 1.2重复 1.2.1最小匹配与精确匹配 1.3前向界定与后向界定 1.4组的基本知识 2.re模块的基本函数 2.1使用compile加速 2.2 ma ...
- python 正则,常用正则表达式大全
Nginx访问日志匹配 re.compile #re.compile 规则解释,改规则必须从前面开始匹配一个一个写到后面,前面一个修改后面全部错误.特殊标准结束为符号为空或者双引号: 改符号开始 从 ...
- python基础——实例属性和类属性
python基础——实例属性和类属性 由于Python是动态语言,根据类创建的实例可以任意绑定属性. 给实例绑定属性的方法是通过实例变量,或者通过self变量: class Student(objec ...
- python 正则使用笔记
python正则使用笔记 def remove_br(content): """去除两边换行符""" content = content.r ...
- Python正则处理多行日志一例
正则表达式基础知识请参阅<正则表达式基础知识>,本文使用正则表达式来匹配多行日志并从中解析出相应的信息. 假设现在有这样的SQL日志: SELECT * FROM open_app WHE ...
随机推荐
- J2EE它是一个框架?平台?规范?
一.J2EE究竟是什么 百度百科上说J2EE是框架.假设没有人给我讲.假设我不去各种论坛上去找,我可能就会让自己生硬的接受这个说法了.可实际上,我非常幸运,我有一个团队帮助我一起进步. 事实上总的说起 ...
- Android 电子邮件发送成功与失败的提示
前言 欢迎大家我分享和推荐好用的代码段~~ 声明 欢迎转载.但请保留文章原始出处: CSDN:http://www.csdn.net ...
- dtrace4linux_Example
http://www.slideshare.net/brendangregg/what-linux-can-learn-from-solaris-performance-and-viceversa/8 ...
- string与数值之间的转换
9.50 编写程序处理一个vector<string>,其元素都表示整数型.计算vector中所有元素之和.修改程序,使之计算表示浮点值的string之和. 程序如下: #include& ...
- DOS 命令 attrib:修改文件属性
有时候系统中病毒之后会把自己的所有文件的属性改为隐藏只读格式,如果手动修改的话太麻烦并且浪费时间,不如用 Attrib 命令试试. 步骤: 1:开始->运行,在里面输入 cmd,打开命令行界面: ...
- Android(java)学习笔记127:Android Studio新建工程中的build.gradle、settings.gradle
随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成.对于这种多系统.多项目的情况,很多构建工具都已经提供了不错的支持,像maven.ant.Gradle除了借鉴了ant或者 ...
- Arcengine10下载地址
ed2k://|file|%5BArcGIS.Engine.Developer.kit.10.%E8%8B%B1%E6%96%87%E7%89%88%5D.ArcGIS.Engine.Develope ...
- NAT技术基本原理与应用
转载自:http://www.cnblogs.com/derrick/p/4052401.html?utm_source=tuicool&utm_medium=referral#undefin ...
- javascript中substring和substr方法
1.substring 方法 定义:用于提取字符串中介于两个指定下标之间的字符 语法:stringObject.substring(start,stop) 参数描述: start 必需.一个非负的整数 ...
- Linux系统下安装ISO文件
1.在/mnt目录下,创建相应的iso文件夹,例如cd1,cd2. 2.然后,用命令:mount -o loop /home/kinglu/Matlab/matlab1.iso(iso文件路径名) / ...