分享

python学习06

 xiaoyimin 2019-07-13

1. 正则表达式基础

1)行定位符

^ 表示行开始,$ 表示行的结尾

例子:

^tm 匹配tm equal Tomorrow Moon
tm$ 匹配Tomorrow Moon equal tm

2)元字符

3)限定符

4)字符类:再方括号中列出,如[aiou]

5)排除字符,如[^a-zA-Z],方括号中使用^表示排除的意思

6)选择字符

例子:匹配身份证的表达式:(^\d{15}$)|(^\d{18}$)|((^\d{17})(\d|x|X))

匹配15位数字,或者18位数字,或者 17位数字和最后一位,最后一位可以是数字或x或X

7)转义字符

例子:匹配类似127.0.0.1格式的IP地址

[1-9]{1,3}\.[0-9]{0,3}\.[0-9]{0,3}\.[0-9]{1,3}

8)分组

使用小括号可以分组,如:(\.[0-9]{1,3}){3}

2. 使用re表达式实现正则表达式匹配

re模块在使用前,应先导入:import re

a. 匹配字符串:match()方法、search()方法、findall()等方法

match()方法,语法格式:re.match(pattern,string,[flags])

pattern:模式字符串

string:要匹配的字符串

flags:可选参数,表示标志位,控制匹配方式,如是否区分字母大小写

例子:

import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.match(pattern, string, re.I)
print(match)
print('匹配值的起始位置:', match.start())
print('匹配值的结束位置:', match.end())
print('匹配位置的元组:', match.span())
print('要匹配的字符:', match.string)
print('匹配数据:', match.group())
string = '项目名称MR_SHOP mr_shop'
match = re.match(pattern, string, re.I)
print(match)

输出结果:

<re.Match object; span=(0, 7), match='MR_SHOP'>
匹配值的起始位置: 0
匹配值的结束位置: 7
匹配位置的元组: (0, 7)
要匹配的字符: MR_SHOP mr_shop
匹配数据: MR_SHOP
None

获取匹配值的起始位置使用Match对象的start()方法,获取匹配值的结束位置使用end()方法,通过span()方法返回位置的元组,通过string属性可以获取要匹配的字符串

search():在整个字符串搜索第一个匹配的值,匹配成功,返回Match对象,否则None

语法格式:re.search(pattern, string, [flags])

例子:

import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.search(pattern, string, re.I)
print(match)
string = '项目名称MR_SHOP mr_shop'
match = re.search(pattern, string, re.I)
print(match)

输出结果:

<re.Match object; span=(0, 7), match='MR_SHOP'>
<re.Match object; span=(4, 11), match='MR_SHOP'>

findall():在整个字符串中搜索所有符合正则表达式的字符串,并以 列表的形式返回。匹配成功,返回列表,否则返回空列表。

语法格式:re.findall(pattern, string, [flags])

例子:

import re
pattern = r'mr_\w+'
string = 'MR_SHOP mr_shop'
match = re.findall(pattern, string, re.I)
print(match)
string = '项目名称MR_SHOP mr_shop'
match = re.findall(pattern, string, re.I)
print(match)

输出结果:

['MR_SHOP', 'mr_shop']
['MR_SHOP', 'mr_shop']

b. 替换字符串:sub()方法

语法格式:re.sub(pattern, repl, string, count, flags)

例子:

import re
pattern = r'1[34578]\d{9}'
string = '中奖号码: 84978981 联系电话: 13611111111'
result = re.sub(pattern, '1XXXXXXXXXX', string)
print(result)

输出结果:

中奖号码: 84978981 联系电话: 1XXXXXXXXXX

c. 分割字符串:split()方法

语法格式:re.split(pattern, string, [maxsplit], [flags])

例子:

import re
pattern = r'[?|&]'
url = 'http://www./login.jsp?username='mr'&pwd='mrsoft''
result = re.split(pattern, url)
print(result)

输出结果:

['http://www./login.jsp', 'username='mr'', 'pwd='mrsoft'']

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多