python正则表达式

python正则表达式

1.常见表示符:

  • 字符表示:
字符 功能
. 匹配任意1个字符(除了 )
[ ] 匹配[ ]中列举的字符
d 匹配数字,即0-9
D 匹配非数字,即不是数字
s 匹配空白,即 空格,tab键
S 匹配非空白
w 匹配单词字符,即a-z、A-Z、0-9、_
W 匹配非单词字符
  • 数量表示:
字符 功能
* 匹配前一个字符出现0次或者无限次,即可有可无
+ 匹配前一个字符出现1次或者无限次,即至少有1次
? 匹配前一个字符出现1次或者0次,即要么有1次,要么没有; 在"*","?","+","{m,n}"后面加上?,使贪婪变成非贪婪
{m} 匹配前一个字符出现m次
{m,} 匹配前一个字符至少出现m次
{m,n} 匹配前一个字符出现从m到n次
  • 表示边界:
字符 功能
^ 匹配字符串开头
$ 匹配字符串结尾
 匹配一个单词的边界
B 匹配非单词边界

2.常见方法:

  • re.match('xxx',str):
    能够匹配出以xxx开头的字符串

>>> import re

# 匹配以12开头的字符串,如果匹配成功,返回一个对象,匹配失败则返回None。

>>> print(re.match('12','123456'))  
<_sre.SRE_Match object; span=(0, 2), match='12'>

>>> print(re.match('12','0123456') )
None

# re.match返回的对象拥有group()方法,返回匹配到的字符串

>>> re.match('1.?','123456').group()
12

  • .group()返回匹配到的字符串。
  • .groups()返回匹配分组时匹配到的字符串的元组。
  • .group(0)等同于.group()
  • .group(1)等同于.groups()[0]
  • .group(n)等同于.groups()[n-1]

  • re.search('xxx',str):
    re.match只能够匹配出以xxx开头的字符串,search可以全文中匹配出xxx字符串。
>>> re.search('1.?','ss123456').group()
12

>>> re.match('1.?','ss123456').group()
AttributeError


  • re.findall('xxx',str):
    匹配出字符串中所有的匹配项,不过返回值不是一个正则对象,而是一个列表。
>>> re.findall('1.?','jiao1awo15guan16ren')
['1a', '15', '16']


  • re.split('xxx',str):
    分给字符串,不过分割符是正则表达式。
>>> re.split('1.?','jiao1awo15guan16ren')
['jiao', 'wo', 'guan', 'ren']

  • re.sub('xxx','yyy',str):
    将所有被xxx匹配到的字符串都替换成yyy(可以给匹配到的内容命名,替换时再重用)
>>>  re.sub('1.?',' T-T ','jiao1awo15guan16ren')
'jiao T-T wo T-T guan T-T ren'

>>>  re.sub(r'{{(?P<name1>w*?)}}', 'g<name1>', '{{wol}} > 1')
'wol > 1'
    

3.匹配分组:

字符 功能
| 匹配左右任意一个表达式
(ab) 将括号中字符作为一个分组
umber 引用分组num匹配到的字符串
(?P) 分组起别名
(?P=name) 引用别名为name分组匹配到的字符串
# 匹配1~100.
>>> re.match("[1-9]?d$|100","100")

# 匹配是否符合html标签
>>> re.match(r"<(w*)><(w*)>.*</2></1>", "<html><h1>www.itcast.cn</h1></html>")

# 匹配是否符合html标签:方法er
>>> ret = re.match(r"<(?P<name1>w*)><(?P<name2>w*)>.*</(?P=name2)></(?P=name1)>", "<html><h1>www.itcast.cn</h1></html>")

>>> ret.group()
'<html><h1>www.itcast.cn</h1></html>'

>>> ret.groups()
('html', 'h1')

原文地址:https://www.cnblogs.com/PrettyTom/p/12559153.html