python正则表达式通过re模块使用方法

1. match 和 search

  • re.match(表达式, string, 选项).span() 只从开头开始匹配,存在则返回(起始位置,结束位置),否则返回None

  • re.search(表达式, string, 选项).span() 全文搜索,存在则返回(起始位置,结束位置),否则返回None

  • 代码举例

>>> re.match('com', 'www.baidu.com')
>>> re.match('www', 'www.baidu.com').span()
(0, 3)

>>> re.search('w{3}', 'wWw.baidu.com', re.I|re.M).span()
(0, 3)
>>> re.search('com', 'wWw.baidu.com', re.I|re.M).span()
(10, 13)

2. flag标志选项

修饰符描述
re.I使匹配对大小写不敏感
re.L做本地化识别(locale-aware)匹配
re.M多行匹配,影响 ^ 和 $
re.S使 . 匹配包括换行在内的所有字符
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。

3. sub

  • re.sub(表达式, repl, string, count=0, flag=0) 默认count为0替换所有,可省略
  • 不会对原字符串修改,只会生成新的字符串
  • 代码示例
>>> phone = '400-8888-888 # welecom to BJ'
>>> num = re.sub('#.*', '', phone)  # 删除注释
>>> num
'400-8888-888 '
>>>
>>> phone
'400-8888-888 # welecom to BJ'
>>>
>>> num = re.sub('\D*', '', phone)  # 删除非数字字符
>>> num
'4008888888'

repl 参数可以是个函数,对匹配成功的字符作为参数传入,通过处理后返回新的字符串作为替代物

def handle(str):
    return str.append(' hallo')

re.sub('[A-Z][a-z]{2,5}', handle, string)

4. compile

  • pattern = re.compile(正则表达式) : 生成正则表达式对象供matchsearch使用

  • pattern.match(string, 起始位置,结束位置) : pattern对象调用match方法

注意:这里的match方法和re.match不完全相同,这里的match可以设置首尾位置

import re
pa = re.compile(r'(\d+) ([a-z]+)')  # 分组指( ), 一个() 代表一个组
result1 = pa.match('12 b23cc4', 0, 8)  # 首尾位置可以不写,默认为全部

# 所有的(除了groups)默认都为0,表示所有
print(result1.group(0))  # 全部
print(result1.group(1))  # 第一个分组
print(result1.group(2))  # 第二个分组
print(result1.groups())  # 所有分组,等价于 group(1), group(2)
print(result1.start(2))  # 第二个分组开始
print(result1.end(1))   # 第一个分组结尾
print(result1.span(2)) # 第二个分组范围

5. findall

  • pattern.findall(string, start, end) 匹配字符串中所以符合的子串,以列表形式返回
import re
pa = re.compile(r'\d+')  # 匹配所有数字

result = pa.findall('a12b34c5')
print(result)  # ['12', '34', '5']

6. split

  • pattern.split(string, 最大分割点数) 默认全部分割,以列表返回
import re
pa = re.compile(r'\.')  # 匹配所有数字

res = pa.split('a.b.cc', 1)
print(res)      # ['a', 'b.cc']
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值