Python_正则表达式一
- '''
- 常用的正则表达式元字符
- . 匹配换行符以外的任意单个字符
- * 匹配位于'*'之前的字符或子模的0次或多次出现
- + 匹配位于'+'之前的字符或子模式的1次或多次出现
- - 用在[]之内用来表示范围
- | 匹配位于'|'之前或之后的字符
- ^ 匹配行首,匹配以^后面的字符开头的字符串
- $ 匹配行尾,匹配以$之前的字符结束的字符串
- ? 匹配位于'?'之前的0个或1个字符。当此字符紧随任何其他限定符(*、+、?、{n}、{n,}、{n,m}之后时,匹配模式是'非贪心的'。'非贪心的'模式匹配
- 尽可能短的字符串,而默认的'贪心的'模式匹配搜索到的、尽可能长的字符串。例如:在字符串'oooo'中,'o+?'只能匹配单个,而'o+'匹配所有o
- \ 表示位于\之后的为转义字符
- \num 此处的num是一个正整数,例如,'(.)\1'匹配两个连续的相同字符
- \f 换页符匹配
- \n 换行符匹配
- \r 匹配一个回车符
- \b 匹配单词头或单词尾
- \B 与\b含义相反
- \d 匹配任意数字,相当于[0-9]
- \D 与\d含义相反,等效于[^0-9]
- \s 匹配任何空白字符,包括空格、制表符、换页符,与[\f\n\r\t\v]等效
- \S 与\s含义相反
- \w 匹配任何字母、数字以及下划线,相当于[a-zA-Z0-9_]
- \W 与\w含义相反,与[^a-zA-Z0-9_]等效
- () 将位于()内的内容作为一个整体来对待
- {} 按{}中的次数进行匹配
- [] 匹配位于[]中的任意一个字符
- [^xyz] ^放在[]表示反向字符集,匹配除x,y,z以外的任何字符
- [a-z] 字符范围,匹配指定范围内的任何字符
- [^a-z] 反向范围字符,匹配除小写英文字母之外的任何字符
- '''
- '''
- 常用子模式扩展语法
- (? P<groupname>) 为子模式命名
- (? iLmsux) 设置匹配标志,可以是几个字母的组合,每个字母含义与编译标志相同
- (?:...) 匹配但不捕获该匹配的子表达式
- (? P=groupname) 表示在此之前的命名为groupname的子模式
- (? #...) 表示注释
- (? =...) 用于正则表达式之后,表示如果'='后面的内容在字符串中出现则匹配,但不反回'='之后的内容
- (?! ...) 用于正则表达式之后,表示如果'!'后2的内容在字符串中不出现则匹配,但不返回'='之后的内容
- (? <=...) 用于正则表达式之前,与(? =...)含义相同
- (? <!...) 用于正则表达式之前,与(?! ...)含义相同
- '''
re模块使用
- import re
- '''
- compile() 创建模式对象
- re.search() 在这种整个字符串中寻找模式,返回match对象或None
- re.match() 从字符串的开始处匹配模式,返回match对象或None
- re.findall() 列出字符串中模式的所有匹配项
- re.split() 根据模式匹配项分割字符串
- re.sub() 将字符串中所有pat的匹配项用repl替换
- re.escape() 将字符串中所有特殊正则表达式转义
- '''
- text='alpha.beta...gamma delta' #测试用的字符串
- print(re.split('[\.]+',text))
- print(re.split('[\.]+',text,maxsplit=2)) #最多分隔2次)
- print(re.split('[\.]+',text,maxsplit=1)) #最多分隔1次
- pat = '[a-zA-Z]'
- print(re.findall(pat,text)) #查找所有单词
- # ['a', 'l', 'p', 'h', 'a', 'b', 'e', 't', 'a', 'g', 'a', 'm', 'm', 'a', 'd', 'e', 'l', 't', 'a']
- pat='{name}'
- text='Dear {name}...'
- print(re.sub(pat,'Mr.Dong',text)) #字符串替换
- # Dear Mr.Dong...
- s='a s d'
- print(re.sub('a|s|d','good',s))
- # good good good
- print(re.escape('http://www.python.org')) #字符串转义
- # http\:\/\/www\.python\.org
- print(re.match('done|quit','done')) #匹配成功,返回match对象
- # <_sre.SRE_Match object; span=(0, 4), match='done'>
- print(re.match('done|quit','doe!')) #匹配不成功
- # None
- print(re.search('done|quit','d!one!done')) #匹配成功
- # <_sre.SRE_Match object; span=(6, 10), match='done'>
- s='aaa bb c d e fff '
- print(' '.join(s.split())) #不使用正则表达式,直接使用字符串对象的方法
- # aaa bb c d e fff
- print(re.split('[\s]+',s))
- # ['aaa', 'bb', 'c', 'd', 'e', 'fff', '']
- print(re.split('[\s]+',s.strip())) #同时使用re模块中的方法和字符串对象的方法
- # ['aaa', 'bb', 'c', 'd', 'e', 'fff']
- print(' '.join(re.split('[\s]+',s.strip())))
- # aaa bb c d e fff
- print(' '.join(re.split('\s+',s.strip())))
- # aaa bb c d e fff
- print(re.sub('\s+',' ',s.strip())) #直接使用re模块的字符串替换方法
- # aaa bb c d e fff
- '''
- 下面的代码使用以'\'开头的元字符来实现字符串的特定搜索
- '''
- example='China institute of business and Technology is a very beautiful school. '
- print(re.findall('\\ba.+?\\b',example)) #以字母a开头的完整单词,'?'表示非贪心模式
- # ['and', 'a ']
- print(re.findall('\\ba.+\\b',example)) #贪心模式的匹配结果
- # ['and Technology is a very beautiful school']
- print(re.findall('\\ba\w*\\b',example))
- # ['and', 'a']
- print(re.findall('\\Bo.+?\\b',example))
- # ['ology', 'ool']
- print(re.findall('\\b\w*\\b',example)) #所有单词
- # ['China', '', 'institute', '', 'of', '', 'business', '', 'and', '', 'Technology', '', 'is', '', 'a', '', 'very', '', 'beautiful', '', 'school', '']
- print(re.findall('\w+',example))
- # ['China', 'institute', 'of', 'business', 'and', 'Technology', 'is', 'a', 'very', 'beautiful', 'school']
- re.findall(r'\b\w.+?\b',example) #使用原始字符串
- # ['China', 'institute', 'of', 'business', 'and', 'Technology', 'is', 'a', 'very', 'beautiful', 'school']
- print(re.split('\s',example)) #使用任何空白字符分隔字符
- print(re.findall('\d+\.\d+\.\d+','Python 3.5.988')) #查找并返回x.x.x形式的数字
- # ['3.5.988']
- print(re.findall('\d+\.\d+\.\d+','Python 3.5.988,3.54.45'))
- '''
- 使用正则表达式对象
- 首先使用re模块的compile()方法将正则表达式编译生成正则表达式对象,然后再使用正则表达式对象提供的方法进行字符串处理。使用编译后的正则表达式对象
- 不仅可以提高字符串处理速度,还提供了更加强大的字符串处理功能。
- 正则表达式对象math(string[,pos[,endpos]])方法用于在字符串开头或指定位置进搜索,模式必须出现在字符串开头或指定位置;searc(string[,pos[,endpos]])
- 方法用于正整个字符串或指定范围中进行搜索;findall(strinng[,pos[,endpos]])方法用来在整个字符串中查找所有符合正则表达式的字符串并以列表形式返回
- '''
- example='China Institute of Business and Technology'
- pattern = re.compile(r'\bB\w+\b') #编译正则表达式对象,查找以B开头的单词
- print(pattern.findall(example)) #使用正则表达式对象的findall()方法
- # ['Business']
- pattern=re.compile(r'\w+y\b') #以字母y结尾的单词
- print(pattern.findall(example))
- # ['Technology']
- pattern = re.compile(r'\b[a-zA-Z]{3}\b')
- print(pattern.findall(example))
- # ['and']
- pattern.match(example) #从字符串开头开始匹配,失败返回空值
- print(pattern.search(example)) #在整个字符串中搜索,成功
- pattern = re.compile(r'\b\w*a\w*\b') #查找所有以字母a的单词
- print(pattern.findall(example))
- # ['China', 'and']
- text ='He was carefully disguised but captured quickly by police.'
- print(re.findall(r'\w+ly',text)) #查找所有以字母ly结尾的单词
- # ['carefully', 'quickly']
Python_正则表达式一的更多相关文章
- python_正则表达式
re.match函数 re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none. 函数语法: \[re.match(pattern, strin ...
- Python_正则表达式二
''' 正则表达式对象的sub(repl,string[,count=0])和subn(repl,string[,count=0])方法用来实现字符串替换功能 ''' example='''Beaut ...
- Python_正则表达式样例
''' 正则表达式是字符串处理的有力工具和技术,正则表达式使用预定义的特定模式去匹配一类具有共同特征的字符串, 主要用于字符串处理,可以快速.准确地完成复杂的查找.替换等处理要求. 正则表达式由元字符 ...
- python_正则表达式概述
正则表达式(RegularExpression, re) - 是一个计算机科学的概念- 用于使用单个字符串来描述,匹配符合某个规则的字符串- 常常用来检索,替换某些模式的文本 # 正则的写法- .(点 ...
- python_正则表达式学习
re.match()函数: 函数语法: re.mathch ( pattern , string , flags = 0) 参数说明: pattem 匹配的正则表达式 string 要匹配的字符串 f ...
- Python_正则表达式语法
1.正则表达式中的操作符: 2.re库的使用: import re #search方法要求只要待匹配的字符串中包含正则表达式中的字符串就可以 match = re.search('python+',' ...
- python_正则表达式随笔
webpage_regex = re.search(r'span_ed7[\s\S]*', dd) [\s\S]* 匹配多行,转义字符 webpage_regex = re.compile('< ...
- Python_常用的正则表达式处理函数
正则表达式就是用查找字符串的,它能查找规则比较复杂的字符串反斜杠:正则表达式里面用"\"作为转义字符. s='<a class="h3" href=&qu ...
- JS正则表达式常用总结
正则表达式的创建 JS正则表达式的创建有两种方式: new RegExp() 和 直接字面量. //使用RegExp对象创建 var regObj = new RegExp("(^\\s+) ...
随机推荐
- Dynamics CRM 2011/2013 DeveloperToolkit的使用
Dynamic CRM 2011的SDK中提供了一个叫DeveloperToolkit的工具,他的用途官方说明说的很明确,能方便开发者在VS中直接部署webresource.plugin.workfl ...
- Django访问量和页面点击数统计
http://blog.csdn.net/pipisorry/article/details/47396311 下面是在模板中做一个简单的页面点击数统计.model阅读量统计.用户访问量统计的方法 简 ...
- libevent之eventop
在之前博文libevent之Reactor模式中,我们知道Reactor模式中一个重要的组件就是事件多路分发机制(event demultiplexer).而在libevent中,对事件多路分发机制的 ...
- 放yy直播点赞动画
最近在做直播相关的东西,这个动画是IOS先撸出来的,后来android这边要模仿,大部分直播应用都有很炫酷的点赞动画,所以也没什么好稀奇的.如果有现成的轮子了,就没必要自己再造了,后来参照了程序亦非猿 ...
- 使用 /sys 文件系统访问 Linux 内核
sysfs 与 /sys sysfs 文件系统总是被挂载在 /sys 挂载点上.虽然在较早期的2.6内核系统上并没有规定 sysfs 的标准挂载位置,可以把 sysfs 挂载在任何位置,但较近的2.6 ...
- 开发资源库(repositiory)
1.. 52研发网MTK软件 2.一流研发 3. android+MTK/华为的源代码及资料库(CryToCry96) 点击打开链接 4.android+MTK/华为/联想的源代码及资料库(lucka ...
- Java进阶(十四)实现每天定时对数据库的操作
Java实现每天定时对数据库操作 现在有一个很棘手的问题:客户要求实现一个功能,就是每日凌晨自动计算慢性病订单是否有需要在今日提醒的,如果有则生成一条提醒记录到lm_notice之中. 如何在Web工 ...
- LeetCode之“动态规划”:Minimum Path Sum && Unique Paths && Unique Paths II
之所以将这三道题放在一起,是因为这三道题非常类似. 1. Minimum Path Sum 题目链接 题目要求: Given a m x n grid filled with non-negative ...
- x64系统的判断和x64下文件和注册表访问的重定向——补记
原来的地址 x64系统的判断和x64下文件和注册表访问的重定向(1) x64系统的判断和x64下文件和注册表访问的重定向(2) x64系统的判断和x64下文件和注册表访问的重定向(3) 之前在(3)里 ...
- MTK 快速开机 技术详解
Android version 2.3.5 首先查看Settings里控制开关 01 // 获取当前状态 02 boolean ipoSettingEnabled = Settings.System. ...