了解简单的正则表达式

介绍

 正则表达式并不是某个语言的一部分 。正则表达式是用于处理字符串的强大工具,拥有其自己独特的语法以及一个独立的处理引擎,效率上可能不如str自带的方法,单功能十分强大。得益于这一点,在提供了正则表达式的语言里,正则表达式的语法都是一样的,区别只在于不同的编程语言实现支持的语法数量不同;单不被支持的语法通常是不常用的部分。

正则表达式的字符和语法

贪婪和非贪婪

 正则表达式通常用于在文本中查找匹配的字符串。Python中默认是贪婪的(在少数语言中可能默认是非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。

反斜杠

 正则表达式里使用"“作为转义字符,这就可能造成反斜杠困扰。假如你需要匹配文本中的”",那么将需要4个反斜杠"\\":前两个和后两个分别用于在编程语言里转义成反斜杠,转换成两个反斜杠后再在正则表达式里转义成一个反斜杠。
 Python里的原生字符串很好诶解决了这个问题,这个例子中的正则表达式可以使用r"\“表示。同样,匹配一个数字的”\d"可以写成r"\d"。有了原生字符串,就可以不用担心漏写反斜杠了,表达式也更加直观。

re模块常用函数

Match

 使用指定正则去字符串中寻找可以匹配的字符串,返回匹配的第一个字符串,并且不再继续
注意
 mach函数是从字符串开始处开始查找的,如果开始处不匹配,则不再继续寻找,返回值为一个 SER_Match对象,找不到时则返回None

escape

 转义。如果你需要操作的文本中含有正则的元字符,你在写正则的时候需要将元字符加上反斜杠去匹配自身,而当这样的字符很多时,写出来的正则表达式就看起来很乱,而且写起来也很麻烦。

str = ".+\d111"
ret = re.escape(".+\d111")
print(ret)
# \.\+\\d111

findall

 findall函数在待操作的字符串中寻找所有匹配正则表达式的字符串,返回一个列表,如果没有匹配到任何字符串,返回一个空列表。

import re

ret = re.findall(r"\d+", "python = 9999, c = 7890, c++ = 12345")
print(ret)

# ['9999', '7890', '12345']

search

 search函数类似于match,不同之处在于不限制正则表达式开始匹配的位置

import re

ret = re.search(r"\d+", "阅读次数为 9999")
ret.group()

# '9999'

sub

 按照规则去查询字符串,并且将匹配到的数据进行替换

import re

ret = re.sub(r"\d+", '998', "python = 997")
print(ret)

# python = 998

split

 根据匹配进行切割字符串,并返回一个列表

import re

ret = re.split(r":| ","info:xiaoZhang 33 shandong")
print(ret)

# ['info', 'xiaoZhang', '33', 'shandong']
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值