[011]Python的函数_正则表达式_全栈基础

您好!此笔记的文本和代码以网盘形式分享于文末!

因个人能力有限,错误处欢迎大家交流和指正!基础部分内容简单,但多且零散!

7、re模块:re模块和正则表达式
正则表达式:正则表达式是对字符串操作的一种逻辑公式,就是用事先定义好的一些特定字符、及这些特定字符的组合,组成一个“规则字符串”,这个“规则字符串”用来表达对字符串的一种过滤逻辑
字符组   
元字符匹配内容  
匹配除换行符以外的任意字符  
\w匹配字母或数字或下划线  
\s匹配任意的空白符  
\d匹配数字  
\n匹配一个换行符  
\t匹配一个制表符  
\b匹配一个单词的结尾  
^匹配字符串的开始  
$匹配字符串的结尾  
\W匹配非字母或数字或下划线  
\D匹配非数字  
\S匹配非空白符  
a|b匹配字符a或字符b  
()匹配括号内的表达式,也表示一个组  
[...]匹配字符组中的字符  
[^...]匹配除了字符组中字符的所有字符  
    
量词用法说明  
*重复零次或更多次  
+重复一次或更多次  
?重复零次或一次  
{n}重复n次  
{n,}重复n次或更多次  
{n,m}重复n到m次  
    
正则待匹配字符匹配结果说明
海.海燕海娇海东海燕海娇海东匹配所有"."的字符
^海.海燕海娇海东海燕只从开头匹配"海."
  海.$  海燕海娇海东海东只匹配结尾的"海.$"
    
正则待匹配字符匹配结果说明
.?李杰和李莲英和李二棍子李杰李莲李二?表示重复零次或一次,即只匹配""后面一个任意字符
李.*李杰和李莲英和李二棍子李杰和李莲英和李二棍子*表示重复零次或多次,即匹配"李"后面0或多个任意字符
李.+李杰和李莲英和李二棍子李杰和李莲英和李二棍子+表示重复一次或多次,即只匹配"李"后面1个或多个任意字符
李.{1,2}李杰和李莲英和李二棍子李杰和李莲英李二棍{1,2}匹配12次任意字符
前面的*,+,?等都是贪婪匹配,也就是尽可能匹配,后面加?号使其变成惰性匹配   
    
正则待匹配字符匹配结果说明
李[杰莲英二棍子]*李杰和李莲英和李二棍子李杰 
李莲英表示匹配""字后面[杰莲英二棍子]的字符任意次
李二棍子 
李[^和]*李杰和李莲英和李二棍子李杰表示匹配一个不是"和"的字符任意次
李莲英
李二棍子
[\d]456bdha34表示匹配任意一个数字,匹配到4个结果
5
6
3
[\d]+456bdha3456表示匹配任意个数字,匹配到2个结果
3
    
正则待匹配字符匹配结果说明
^[1-9]\d{13,16}[0-9x]$110101198001017000    110101198001017000       表示可以匹配一个正确的身份证号
^[1-9]\d{13,16}[0-9x]$1101011980010170    1101011980010170    表示也可以匹配这串数字,
但这并不是一个正确的身份证号码,
它是一个
16位的数字
^[1-9]\d{14}(\d{2}[0-9x])?$1101011980010170    FALSE现在不会匹配错误的身份证号了
()表示分组,将\d{2}[0-9x]分成一组,
就可以整体约束他们出现的次数为
0-1
^([1-9]\d{16}[0-9x]|[1-9]\d{14})$110105199812067000    110105199812067000    表示先匹配[1-9]\d{16}[0-9x]
如果没有匹配上就匹配[1-9]\d{14}
    
正则待匹配字符匹配结果说明
\n\n False因为在正则表达式中\是有特殊意义的字符,
所以要匹配
\n本身,用表达式\n无法匹配
\\n\n True转义\之后变成\\,即可匹配
"\\\\n"'\\n' True如果在python中,字符串中的'\'也需要转义,
所以每一个字符串
'\'又需要转义一次
r'\\n'r'\n' True在字符串之前加r,让整个字符串不转义
    
待匹配字符匹配结果说明
<.*><script>...<script><script>...<script>默认为贪婪匹配模式,会匹配尽量长的字符串
<.*?>r'\d'<script> <script>加上?为将贪婪匹配模式转为非贪婪匹配模式
,会匹配尽量短的字符串
    
 *? 重复任意次,但尽可能少重复  
 +? 重复1次或更多次,但尽可能少重复  
 ?? 重复0次或1次,但尽可能少重复  
 {n,m}? 重复n到m次,但尽可能少重复  
 {n,}? 重复n次以上,但尽可能少重复  
    
 . 是任意字符
* 是取 0 至 无限长度
? 是非贪婪模式。
何在一起就是 取尽量少的任意字符,一般不会这么单独写,他大多用在:
.*?x

就是取前面任意长度的字符,直到一个x出现
  
正则表达式修饰符 - 可选标志   
修饰符描述  
re.I使匹配对大小写不敏感  
re.L做本地化识别(locale-aware)匹配  
re.M多行匹配,影响 ^ 和 $  
re.S使 . 匹配包括换行在内的所有字符  
re.U根据Unicode字符集解析字符。这个标志影响 \w, \W, \b, \B.  
re.X该标志通过给予你更灵活的格式以便你将正则表达式写得更易于理解。  

愿有更多的朋友,在网页笔记结构上分享更逻辑和易读的形式:

链接:暂无
提取码:暂无

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值