re.finditer(pattern, string, flags=0) #与findall函数一样,但是返回的是迭代器对象
shell脚本学好需要熟练掌握三部分:指令-正则表达式-控制流,可见正则表达式的重要行,同样在python中,正则表达式也是非常重要的一环。
re模块就是python的正则表达式模块。
>>> import re
>>> re.
re.DEBUG re._MAXCACHE re.__repr__( re.copy_reg
re.DOTALL re.__all__ re.__setattr__( re.error(
re.I re.__class__( re.__sizeof__( re.escape(
re.IGNORECASE re.__delattr__( re.__str__( re.findall(
re.L re.__dict__ re.__subclasshook__( re.finditer(
re.LOCALE re.__doc__ re.__version__ re.match(
re.M re.__file__ re._alphanum re.purge(
re.MULTILINE re.__format__( re._cache re.search(
re.S re.__getattribute__( re._cache_repl re.split(
re.Scanner re.__hash__( re._compile( re.sre_compile
re.T re.__init__( re._compile_repl( re.sre_parse
re.TEMPLATE re.__name__ re._expand( re.sub(
re.U re.__new__( re._pattern_type( re.subn(
re.UNICODE re.__package__ re._pickle( re.sys
re.VERBOSE re.__reduce__( re._subx( re.template(
re.X re.__reduce_ex__( re.compile(
re.compile(pattern, flags=0) #创建一个正则表达式模式对象,可以调用下面的方法。
re.escape('string') #返回一个字符串,其中的所有非字母数字字符都带有反斜杠
re.findall(pattern, string, flags=0) #返回一个符合模式的字符串列表,
>>> re.findall('[1-9]','du1diao3han9')
['1', '3', '9']
re.match(pattern, string, flags=0) #检查字符串的开口是有与模式匹配,若匹配返回一个对象,否则返回none
>>> print re.match('z','s')
None
>>> re.match('d','du diao')
<_sre.SRE_Match object at 0xb735bbf0>
re.search(pattern, string, flags=0) #在字符串中搜索是否有匹配模式的值
若有,返回一个对象实例,否则返回none
<_sre.SRE_Match object at 0xb735bbf0>
>>> re.search('zhu','luozhuhao')
<_sre.SRE_Match object at 0xb7282a30>
>>> re.search('xzhu','luozhuhao')
>>> print re.search('xzhu','luozhuhao')
None
re.split(pattern, string, maxsplit=0, flags=0)
>>> re.split('\|','888|zhu|999')
['888', 'zhu', '999']
re.sub(pattern, repl, string, count=0, flags=0) #用字符串repl替换string中符合模式的字符
>>> re.sub('[1-9]','du juan','ni ke 9 zhidao 8')
'ni ke du juan zhidao du juan'
re.sub(pattern, repl, string, count=0, flags=0)#与sub函数一样,但是返回的是一个元组,包括新字符串和替换次数
>>> re.subn('[1-9]','du juan','ni ke 9 zhidao 8')
('ni ke du juan zhidao du juan', 2)
有re.compile():函数编译的正则表达式对象具有以下方法:
>>> r = re.compile('the')
r.findall(
r.match(
r.search(
r.sub(
r.finditer(
r.scanner(
r.split(
r.subn(
#和上面的函数意义一样,就是参数有些区别
有search()和match()返回的对象具有的方法如下
m.group([group1,group2,...]) #返回匹配值的一个或多个子分组,其中参数指定分组编号或名称,如果未指定分组编号和名称则将返回整个匹配值
m.groups() #返回一个元组,包含与模式中所有分组匹配的文本
何为分组:
datapat = re.compile('(\d+)/(\d+)/(\d+)')
把正则表达式放在小括号中称为分组
从左边数第一个小括号称为group(1)
第二个group(2)
最外面的括号包含整个表达式的称为group(0)
常用的转义码:
\d #一个数字
\D #一个非数字
\s #空白符(制表符,空格,换行符)
\S #非空白符
\w #字母数字
\W #非字母数字
常用的锚定码:
^ #字符串或行的开始
$ #字符串会行的结束
\A #字符串的开始
\Z #字符串的结束
\b #一个单词开头或末尾的空串
\B #不在一个单词开头或末尾的空串
常用的重复匹配:
a* #字符a可以出现0个或多个a
a+ #字符a至少出现1个
a?#a可以出现0个或1个
贪婪模式与关闭贪婪模式
默认是贪婪模式匹配,即是尽可能多的匹配
?可以关闭贪婪模式
a*? #a出现0个
a+? #a出现1个
a??#a出现0个
运维网声明
1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网 享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com