python学习记录3【正则表达式(regex)基础】

正则表达式是一个乍一看简单但实际很复杂的东西。
这里写图片描述
它通常被用来检索、替换那些符合某个模式(规则)的文本。能按照某种模式区配一系列有相似有相似特征的字符串。

正则表达式特殊符号和字符等可直接百度得到(相当重要
https://baike.baidu.com/item/%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F/1700215
常用:

\s 匹配任何不可见字符,包括空格、制表符、换页符等
\w 匹配包括下划线的任何单词字符
( ) 将( 和 ) 之间的表达式定义为“组”(group)
| 将两个匹配条件进行逻辑“或”(Or)运算

在这里插入图片描述

在这里插入图片描述

利用各种模式可以区配到想区配的字符串
例如:

正则表达式模式 区配到的字符串
the 任何包含the的字符串
\bthe 任何以the开始的字符串
\bthe\b 仅仅区配到单词the

python中通过re模块支持正则表达式
使用时调用import re

  • 使用compile()函数编译正则表达式
  • 区配对象
    group()返回整个区配对象
    groups()仅返回一个包含唯一或全部子组的元组

1.正则表达式对象方法:match()
match()函数从字符串起始部分对模式进行区配。若区配成功返回一个区配对象,否则返回None

>>>m = re.match('foo','foo') #模式区配字符串
>>>if m is not None:  #如果区配成功,就输出区配内容
		m.group()
'foo'
>>>m = re.match('foo','bar') #模式不能区配字符串
>>>if m is not None:
		m.group()
		

第二例区配失败,m被赋值为None

>>>re.match('foo','food on the table').group()
'foo'

march()无法从字符串中间区配,这是要用到search()

>>>m = re.match('foo','seafood') #区配失败
>>>if m is not None: m.group()
...
>>>m = re.search('foo','seafood')
>>>if m is not None: m.group()
'foo' #搜索成功

2.使用findall()查找每一次出现的位置
findall()总返回一个列表

>>>re.findall('car','carry the barcardi to the car')
['car','car','car']

3.使用sub()和subn()搜索与替换
subn()多返回一个替换总数

>>>re.sub('X','Mr.Smith','attn:X\n\nDear X, \n')
'attn:Mr.Smith\012\012Dear Mr.Smith, \012'

>>>re.subn('X','Mr.Smith','attn:X\n\nDear X, \n')
('attn:Mr.Smith\012\012Dear Mr.Smith, \012, 2')

参照《python核心编程(第3版)》

  • 正则表达式不包含某些字符串
    ((?!str).)*
    对包含str的字符串区配失败。
  • 区配数字
    区配数字:\d
    区配m-n位数字:\d{m,n}
    至少n位数字:\d{n,}

提取字符串中的URL

import re

s = input("输入字符串:")
url = re.findall('https?://(?:[-\w.]|(?:%[\da-fA-F]{2}))+',s)
print(url)
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

叶柖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值