python正则表达式总结

python进阶知识点巩固
一,正则表达式
使用正则表达式前引入re模块
import re
使用正则举例:
import re
text = ‘abcdesfgfsdf’
key = r’ab’
regex = re.compile(key)
value = re.search(text,regex)
print(value.group())
1,re.compile函数
作用:用于生成一个pattern对象
用法:pattern = re.compile(r’\d+’)
说明:用于生成pattern对象,用于匹配文本进行搜索,类似定制刀具,砍特定的木头。
2,搜索表达式
作用:用于匹配和pattern对象相应的内容
用法:
a, pattern.match(准备匹配的文本,可选标志)
b,pattern.search(准备匹配的文本,可选标志)
c,pattern.findall(准备匹配的文本,可选标志)
说明:
a方法使用于所匹配文本开头匹配,可以在需要匹配的文本后面加入下标,例如
pattern=re.compile(r’\d+’)
print(pattern.match(‘one12two3three’,3,8))#结果为<re.Match object; span=(3, 5), match=‘12’>即会从下标为3处开始,左闭右开的区间内进行匹配。
b方式用于全文匹配,扫描整个字符串并返回第一个成功的匹配。
c方式也用于全文匹配,区别于b方式不同的是,返回一个列表,并把所有成功的匹配全部加入列表中。若想使用迭代器,则可以使用findter格式。和findall功能基本一致,只是作为迭代器返回。
说明:可选标志举例,re.l 匹配忽略大小写,re.dotall 句点匹配换行 re.verbose 可以在匹配语句中添加注释
上述三种匹配方式,若没有匹配到结果均返回None
3,检索和替换:
re.sub(pattern,repl,string,count,flags)
re.subn(pattern,repl,string,count,flags)#返回时多一个参数,替换次数
count代表匹配时被替换的最大次数,默认和0值均表示替换所有
举例:
phone=‘2018-112-221’
num=re.sub(r’\D’,’’,phone)
print(num) #22018112221
其中repl也可以作为一个函数
驼峰算法:
text=‘get_element_by_id’
regex=r’_(\w)’
def upp(matched):
value=matched.group(1)
return value.upper()
result=re.sub(regex,upp,text)
print(result)#getElementById
4,split函数
作用:用于匹配并分割,返回列表
re.split(pattern,string,times)
times指定最大分割次数,默认为全部分割
print(re.split(’\d+’,‘one1two2three3four4’))#[‘one’, ‘two’, ‘three’, ‘four’, ‘’]
5,一些特殊符号
(?P…)
命名组,通过组的名字(name)即可访问到子组匹配的字符串
(?P=name)
反向引用一个命名组,它匹配指定命名组匹配的任何内容
(?#…)
注释,括号中的内容将被忽略
(?=…)
前向肯定断言。如果当前包含的正则表达式(这里以 … 表示)在当前位置成功匹配,则代表成功,否则失败。一旦该部分正则表达式被匹配引擎尝试过,就不会继续进行匹配了;剩下的模式在此断言开始的地方继续尝试。
举个栗子:love(?=FishC) 只匹配后边紧跟着 “FishC” 的字符串 “love”
(?!..)
前向否定断言。这跟前向肯定断言相反(不匹配则表示成功,匹配表示失败)。
举个栗子:FishC(?!.com) 只匹配后边不是 “.com” 的字符串 “FishC”
(?<=…)
后向肯定断言。跟前向肯定断言一样,只是方向相反。
举个栗子:(?<=love)FishC 只匹配前边紧跟着 “love” 的字符串 “FishC”
(?<!..)
后向否定断言。跟前向肯定断言一样,只是方向相反。
举个栗子:(?<!FishC).com 只匹配前边不是 “FishC” 的字符串 “.com”

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值