正则表达式解析

为什么引入正则表达式?

 使用正则表达式可以用来匹配一类具有相同规则字符串。

使用正则表达式进行匹配的规则如下:

 1、单字符:
            . : 除换行以外所有字符
            [] :[aoe] [a-w] 匹配集合中任意一个字符
            \d :数字  [0-9]
            \D : 非数字
            \w :数字、字母、下划线、中文
            \W : 非\w
            \s :所有的空白字符
            \S : 非空白
   2、数量修饰:
            * : 任意多次  >=0
            + : 至少1次   >=1
            ? : 可有可无  0次或者1次
            {m} :固定m次
            {m,} :至少m次
            {m,n} :m-n次
    3、边界:
            \b \B
            $ : 以某某结尾
            ^ : 以某某开头
    4、 分组:
            (ab){3}
            (){4}  视为一个整体
            ()     子模式\组模式   \1  \2
     5、贪婪模式
            .*?  .+?
        re.I : 忽略大小写
        re.M :多行匹配
        re.S :单行匹配

 1、进行正则匹配查找的方法有三种分别为: match\search\findall

- match:从开头进行匹配,找到就立即返回正则结果对象,没有就返回None

- search:匹配全部内容,任意位置,只要找到,立即返回正则结果对象,没有返回None

- findall:匹配所有内容,返回匹配结果组成的列表,没有返回None

2、进行正则替换的方法:re.sub(正则表达式, 替换内容, 字符串)

3、前两个都是用来处理字符串的方法,还有一种compile()方法,这个方法可以将正则字符串编译成正则表达式对象,在后面的匹配中多次调用。

(1)正则匹配,示例如下:

import re
string = '''love you very much
love she
love her'''
string1 = """<div>春
夏

秋

冬</div>"""

#匹配string里面所有的字符(re.M多行匹配)

pattern1 = re.match(r'^love',string, re.M)

print(pattern1)

#匹配string1里面所有的字符(re.S使.匹配包括换行在内的所有字符)

pattern = re.compile(r'<div>(.*)</div>', re.S)

ret = pattern.findall(string1)

print(ret)

(2)正则替换,示例如下:

#170替换成160

def fn(a):
    ret = int(a.group())
    return str(ret - 10)
string3 = '我是身高为170的女孩'
pattern = re.compile(r'\d+')

ret = pattern.sub(fn, string3)

print(ret)

#所有的love替换成hate

ret = re.sub(r'love', 'hate', string)

或者:

#所有的love替换成hate

pattern = re.compile(r'^love', re.M)

ret = pattern.sub('hate', string)

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值