正则表达式:
正则表达式也叫匹配模式,它由一组具有特定含义的字符串组成,通常用于匹配和替换文本。
正则表达式,是一个的技术,很多 编程语言支持正则表达式处理
正则的使用:(大小写意思正好相反)
re 中的常见方法:match() findall() finditer() sub() compile() serch()
match匹配第一个字符
findall匹配所有的字符
元字符:
. # 匹配非换行的任意字符
\d (degist) #匹配数字<==>[0123456789]<==>[0-9]表示匹配中括号里面出现的数字也就是所有数字(数字只有0-9十个数字)
\D #匹配非数字
\w #匹配有效字符:大小写字母+ 数字+ 下划线(_)+各国语言字符(不建议使用)
\W #匹配特殊符号:-*/+=@#¥%&等符号
\s #匹配空格位(\t代表table键)
\S #匹配所有非空格位
^ #以 开头
$ #以 结尾
^\d.*a$ #表示以数字开头 以a结尾的中间字符串
\b #匹配单词
[] #表示查询[]中的字位 若是中文字体,则需要一个一个的写进去(不带, 若带则说明是要查询,) 0-9 a-z A-Z区间可以任意选择比如[1-5] [h-n]....若是多个区间则是直接写中间不加任何符号 [0-9a-zA-Z]也可以数字--字母 [0-z]用的是ascii码值排列
[^dfg] #表示匹配除了dfg这几个字母之外的所有字符
注意:在python中两个"\"在输出中表示'\',因为'\'具有转义的作用
在正则里面‘\’也具有转移的转义的作用 在正则里面当字符里面有多个‘\’的时候要用r将‘\’的转义的作用去除(有事没事就+r)
位数:(须是英文符号)
* 表示多个或者0个
+ 必须是1或者多个不能是0个(返回值有或者没有 返回没有的时候返回空字符”'')
? 表示0或者1
{m} 表示m位
{m,} 表示至少有m位
{m,n} 表示在m和n位之间(书写时不要有空格),闭区间
==============================================代码如下=============================================
re模块的高级应用:
1、 serch:
执行正则表达式搜索并且在搜索结束后返回所匹配到的串,只返回第一次匹配的结果 返回值是一个迭代器。而findall则是返回所有匹配到的所有串。
2、find:
匹配所有的对象,返回一个列表
3、sub:
实现查找替换
4、split:
分割字符串,结果返回列表
5、finditer:
返回一个迭代器iterator,这个iterator返回顺序、内容和re.findall()相同
6、compile:
用来编译正则表达式模式字符串,并生成正则表达式对象。即改变正则表达式表达方法。
re.I(IGNORECASE)忽略大小写,括号内是完整的写法
re.M(MULTILINE)多行模式,改变^和$的行为
re.S(DOTALL)点可以匹配任意字符,包括换行符
re.L(LOCALE)做本地化识别的匹配,不推荐使用
re.U(UNICODE)使用\w \W \s \S \d \D使用取决于unicode定义的字符属性。在python3中默认使用该flag
re.X(VERBOSE)冗长模式,该模式下pattern字符串可以是多行的,忽略空白字符,并可以添加注释
=========================================================================
贪婪与懒惰:
在Python中正则默认是贪婪模式(个别语言中也可能是非贪婪模式),贪婪模式就是总会尝试匹配更多的字符。非贪婪模式即懒惰模式则相反 懒惰模式总尝试匹配最少的字符。
在*、?、+、{m,n}后面加上?,可以将贪婪模式变成非贪婪模式
网友评论