python正则表达式

python正则表达式

1.常见表示符:

  • 字符表示:
字符 功能
. 匹配任意1个字符(除了\n)
[ ] 匹配[ ]中列举的字符
\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 匹配一个单词的边界
\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) 将括号中字符作为一个分组
\number 引用分组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')

posted @ 2020-03-24 15:07  王辉辉的猫  阅读(163)  评论(0编辑  收藏  举报