python 正则表达式学习笔记(要准备面试的东西了,这个先放着吧)

参考资料:

https://baijiahao.baidu.com/s?id=1607549773736200730&wfr=spider&for=pc这个人的阐述在我心中是非常生动的哦

“正则表达式,又称规则表达式通常被用来检索、替换那些符合某个模式(规则)的文本”,

正则表达式是一个特殊的字符序列,它能帮助你方便的检查一个字符串是否与某种模式匹配。

目的:

1. 给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);match

2. 可以通过正则表达式,从字符串中获取我们想要的特定部分。search

正则表达式并不是Python独有的武器,但Python中的正则表达式最简单,最强大

在Python中使用正则表达式,需要导入金光闪闪的re模块

re - Support for regular expressions (RE)

一、先了解一下正则表达式的书写和规则

在用正则表达式实现匹配或搜索的时候,可以写出一个具体的字符串作为任务对象,当然这样我们就只能找到和目标一样的对象,所以需要制定一些规则实现更多的满足某一条件(正则表达式)的多种情况。

先放出来规则(模式),然后下面举几个例子就明白了:

模式字符串使用特殊的语法来表示一个正则表达式:

字母和数字表示他们自身。一个正则表达式模式中的字母和数字匹配同样的字符串。

多数字母和数字前加一个反斜杠时会拥有不同的含义。

标点符号只有被转义时才匹配自身,否则它们表示特殊的含义。

反斜杠本身需要使用反斜杠转义。

由于正则表达式通常都包含反斜杠,所以你最好使用原始字符串来表示它们。模式元素(如 r'\t',等价于 '\\t')匹配相应的特殊字符。

下表列出了正则表达式模式语法中的特殊元素。如果你使用模式的同时提供了可选的标志参数,某些模式元素的含义会改变。

模式描述
^匹配字符串的开头,即行首
$匹配字符串的末尾,即行尾
.匹配任意字符,除了换行符,当re.DOTALL标记被指定时,则可以匹配包括换行符的任意字符。
[...]用来表示一组字符,匹配其中任意若干个,如果^是第一个字符,则标示的是一个补集。比如[0-9]表示所有的数字,[^0-9]表示除了数字外的字符
*用于将前面的模式匹配0次或多次(贪婪模式,即尽可能多的匹配)
+用于将前面的模式匹配0次或多次(贪婪模式)
?用于将前面的模式匹配0次或1次(非贪婪模式)*?,+?,??即上面三种特殊字符的非贪婪模式(尽可能少的匹配)
{ n}用于将前面的模式精确匹配n次,如, o{2} 不能匹配 "Bob" 中的 "o",但是能匹配 "food" 中的两个 o。
{ n,}用于将前面的模式匹配 n 次。例如, o{2,} 不能匹配"Bob"中的"o",但能匹配 "foooood"中的所有 o。"o{1,}" 等价于 "o+"。"o{0,}" 则等价于 "o*"。
{ n, m}用于将前面的模式匹配m次到n次(贪婪模式),即最小匹配m次,最大匹配n次。
a| b匹配a或b
()用于匹配括号中的模式,可以在字符串中检索或匹配我们所需要的内容

https://www.runoob.com/python/python-reg-expressions.html里还有其他的一些组合情况,这里没列出来

举几个例子:

 [io]+,[io]表示匹配的字符可以是i或o,而后面跟着的+号表示可以对[io]匹配一次或多次。所以只要满足这一条件的字符串都是可以被匹配的。

[a-z],匹配任何小写字母

二、再来看re模块的一些函数

re.match函数

re.match 尝试从字符串的起始位置匹配一个模式,如果不是起始位置匹配成功的话,match()就返回none。

re.match(pattern, string, flags=0)

参数描述
pattern匹配的正则表达式
string要匹配的字符串。
flags标志位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。参见:正则表达式修饰符 - 可选标志

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值