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 ...
随机推荐
- iOS开发——Swift篇&单例的实现
Swift实现单例模式 Swift实现单例模式 由于Swift语言弱化了struct和class之间的界限,这里我分别给出自己写的两种的单例实现 class版本: class SwiftSinglet ...
- Codeforces 444C DZY Loves Colors(线段树)
题目大意:Codeforces 444C DZY Loves Colors 题目大意:两种操作,1是改动区间上l到r上面德值为x,2是询问l到r区间总的改动值. 解题思路:线段树模板题. #inclu ...
- node.js 针对不同的请求路径(url) 做出不同的响应
边看这个边写的: http://wenku.baidu.com/link?url=C4yLe-TVH6060u_x4t34H3Ze8tjoL7HjJaKgH-TvHnEYl-T_gAMYwhmrCeM ...
- 如何打开“USB调试”模式?
请首先确认您的系统版本, 点击「设置」-「关于手机」查看您当前的手机版本号. 如果您使用的是 Android 3.2及以下系统,请按以下步骤操作: STEP1:在应用列表选择「设置」进入系统设置菜单: ...
- js数组定义和获取其长度
1.只有值组成的数组,必须先定义数组对象. 定义 var arrs=new array()或 var arrs=[]; 赋值: arrs[]="he";arrs[]="c ...
- HTML5 面试中最常问到的 10 个问题
1. HTML5 新的 DocType 和 Charset 是什么?HTML5 现在已经不是 SGML 的子集,DocType 简化为: <!doctype h ...
- 数据结果与算法分析(1)——算法分析
在确定一个算法正确的同时,也要保证算法的有效性.算法分析的最重要的标准时运行时间T(N),运行时间与输入元素个数N有关. 数学基础 T(N) = O(f(N)) 表示T(N ...
- 图像处理函数详解——im2bw
im2bw是基于转换为二值图像的算法,用的是otsu's method. matlab中DIP工具箱函数im2bw使用阈值(threshold)变换法把灰度图像(grayscale image)转换成 ...
- ADB无线连接
注意:PC和手机在同一个局域网 背景:很长的时候手机线不够用,连接线还是不爽,偶尔会掉,平时可能手机会被拿走,重现crash的问题,不能很友好的使用DDMS,自己找了一些文章,ADB无线连接,实验成功 ...
- git svn 简易同时使用
这个方法适合于新的一个git 仓库.假如你使用的git 是最新版本,git本身提供了 git svn命令. 1. 进入一个空的目录,初始化一个空的git仓库: git svn init svn://x ...