正则表达式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了正则表达式相关的知识,希望对你有一定的参考价值。
一、作用
正则表达式就是记录文本规则的代码。
二、基本操作
python中re模块提供了正则表达式相关操作
1、字符
. 匹配除换行符以外的任意字符
\w 匹配字母或数字或下划线或汉字
\s 匹配任意的空白符
\d 匹配数字 (\d\d表示可以匹配两位数字,以此类推)
\b 匹配单词的开始或结束
^ 匹配字符串的开始 (开始的字符是指定的)
$ 匹配字符串的结束 (末尾的字符是指定的)
2、次数:
* 重复零次或更多次
+ 重复一次或更多次
? 重复零次或一次
{n} 重复n次
{n,} 重复n次或更多次
{n,m} 重复n到m次
三、re 模块中的方法
.match
.search
.findall
.splid
.sub
1、match:
match(pattern, string, flags
=
0
)
# pattern: 正则模型
# string : 要匹配的字符串
# falgs : 匹配模式
从起始位置开始匹配,匹配成功返回一个对象,未匹配成功返回None (从字符串第0个元素开始匹配,不会在以匹配到的元素中继续匹配,会跳过符合的元素,继续查找,他的值只会有一个)
a.无分组
无分组只有a.group()有意义,用来提取分组截获的字符,其中group只有在match与search中适用。
groups与groupdict 是需要分组的。
匹配的值放在内存中需要group才出来 其中group(num) num可以指定 分组的序数,可以返还对应的匹配值。
import re ret = "abc123def " a = re.match("a\w\w\d",ret) print(a.group()) #abc1
b.分组
注意:groups()以元祖的方式 把带括号匹配到的结果放在一起。只提取带括号的匹配值。
group() 匹配规则带括号与不带括号没有区别。
groupdict() 通常与 ?P<key> 连用表示为分组指定一个key值,输出dict。
import re ret = "abc123def " a = re.match("a\w\w(?P<num>\d)\d(?P<rule>\d\w)",ret) print(a.group()) #abc123d print(a.groups()) #(‘1‘, ‘3d‘) print(a.groupdict()) #{‘num‘: ‘1‘, ‘rule‘: ‘3d‘}
import re ret = "sss123asd456wsd789aqdasc123asdasc123asd" a = re.match("([a-z]*)(\d*)([a-z]*)",ret) print(a.group()) #sss123asd print(a.group(1)) #sss print(a.group(2)) #123 print(a.group(3)) #asd print(a.groups()) #(‘sss‘, ‘123‘, ‘asd‘) print(a.groupdict()) #{}
二、search:
match 是从头开始匹配,search浏览整个字符串去匹配第一个,未匹配成功返回None
以上是关于正则表达式的主要内容,如果未能解决你的问题,请参考以下文章
正则表达式匹配特定的 URL 片段而不是所有其他 URL 可能性