在看<<python基础教程>>的时候有个地方看不懂
>>> import re
>>> emphasis_patten = re.compile(r'''
\*
(
[^\*]+
)
\*
''',re.VERBOSE)
>>> emphasis_patten
<_sre.SRE_Pattern object at 0x02076B60>
>>> re.sub(emphasis_patten, r'<em>\1</em>', 'hello, *world*!')
'hello, <em>world</em>!'不知道为什么\1就把world保存下来了,后来多尝试几次终于懂了
>>> emphasis_patten = re.compile(r'''
\*
(w)
(o)
([^\*]+)
\*
''',re.VERBOSE)
>>> re.sub(emphasis_patten, r'<em></em>', 'hello, *world*!')
'hello, <em></em>!'
>>> re.sub(emphasis_patten, r'<em>\0</em>', 'hello, *world*!')
'hello, <em>\x00</em>!'
>>> re.sub(emphasis_patten, r'<em>\1</em>', 'hello, *world*!')
'hello, <em>w</em>!'
>>> re.sub(emphasis_patten, r'<em>\2</em>', 'hello, *world*!')
'hello, <em>o</em>!'
>>> re.sub(emphasis_patten, r'<em>\3</em>', 'hello, *world*!')
'hello, <em>rld</em>!'所谓的\1其实就是匹配模式的第一个组,让其替换的时候保存下来,如果要在替换的时候保存第二个组可以写\2
组就是放置在圆括号内的子模式, re.VERBOSE标志允许在模式中添加空白(空白字符,tab,换行符,等等),re则会忽略它们
本文通过实例详细解析了Python中正则表达式的使用方法,特别是如何利用组(group)进行匹配,并通过re.sub()函数实现替换操作。读者将学会如何定义复杂的匹配模式并理解反向引用的作用。
6128

被折叠的 条评论
为什么被折叠?



