python正则表达式(regex)基础

正则表达式是一个乍一看简单但实际很复杂的东西。
这里写图片描述
它通常被用来检索、替换那些符合某个模式(规则)的文本。能按照某种模式区配一系列有相似有相似特征的字符串。

正则表达式特殊符号和字符等可直接百度得到(相当重要
https://baike.baidu.com/item/正则表达式/1700215
常用:

\s 匹配任何不可见字符,包括空格、制表符、换页符等
\w 匹配包括下划线的任何单词字符
( ) 将( 和 ) 之间的表达式定义为“组”(group)
| 将两个匹配条件进行逻辑“或”(Or)运算

利用各种模式可以区配到想区配的字符串
例如:

正则表达式模式 区配到的字符串
the 任何包含the的字符串
\bthe 任何以the开始的字符串
\bthe\b 仅仅区配到单词the

python中通过re模块支持正则表达式
使用时调用import re

  • 使用compile()函数编译正则表达式
  • 区配对象
    group()返回整个区配对象
    groups()仅返回一个包含唯一或全部子组的元组

1.正则表达式对象方法:match()
match()函数从字符串起始部分对模式进行区配。若区配成功返回一个区配对象,否则返回None

>>>m = re.match('foo','foo') #模式区配字符串
>>>if m is not None:  #如果区配成功,就输出区配内容
		m.group()
'foo'
>>>m = re.match('foo','bar') #模式不能区配字符串
>>>if m is not None:
		m.group()
		

第二例区配失败,m被赋值为None

>>>re.match('foo','food on the table').group()
'foo'

march()无法从字符串中间区配,这是要用到search()

>>>m = re.match('foo','seafood') #区配失败
>>>if m is not None: m.group()
...
>>>m = re.search('foo','seafood')
>>>if m is not None: m.group()
'foo' #搜索成功

2.使用findall()查找每一次出现的位置
findall()总返回一个列表

>>>re.findall('car','carry the barcardi to the car')
['car','car','car']

3.使用sub()和subn()搜索与替换
subn()多返回一个替换总数

>>>re.sub('X','Mr.Smith','attn:X\n\nDear X, \n')
'attn:Mr.Smith\012\012Dear Mr.Smith, \012'

>>>re.subn('X','Mr.Smith','attn:X\n\nDear X, \n')
('attn:Mr.Smith\012\012Dear Mr.Smith, \012, 2')

参照《python核心编程(第3版)》

  • 正则表达式不包含某些字符串
    ((?!str).)*
    对包含str的字符串区配失败。

猜你喜欢

转载自blog.csdn.net/qq_38929220/article/details/82115852