python正则re的详解

python正则表达式中最常用的就是re。

import re

Regular expression operations

表达式说明
.匹配所有字符串,除\n以外
-表示字符范围如[0-9],[a-z]等等
*匹配前面的子表达式多次。要匹配 * 字符,需要转义
+匹配前面的子表达式多次。要匹配 +字符,需要转义
^匹配以某个字符串开头的内容。如^ab
$匹配以某个字符串结尾的内容。如ab$
\转义字符
?匹配前一个字符串0次或1次
{m}匹配m次
{n,m}匹配前一个字符n到m次
\d匹配数字
\D匹配非数字,等价于[^0-9]
\w匹配字母和数字,等价于[A-Za-z0-9]
\W匹配非英文字母和数字,等价于[^A-Za-z0-9]
\s匹配空白字符,如 \t、 \n
\S匹配非空白字符
[]定义匹配的字符范围。如 [a-zA-Z0-9]
a|b匹配的字符为a或者b
()匹配括号内的任意表达式

编译正则表达式模式

re.compile(pattern, flags=0)

这里面的pattern就是你需要匹配的模式可以借鉴上面表中进行组合。这里的flags表示匹配的附加条件:

flagsValue
re.DEBUG显示编译模版的信息
re.I忽略大小写
re.L本地化识别
re.M多行匹配
re.S让 ‘.’ 特殊字符匹配任何字符,包括换行符;如果没有这个标记,’.’ 就匹配 除了 换行符的其他任意字符
re.U根据Unicode字符集解析
re.X此标志允许您编写正则表达式,看起来更好。在模式中的空白将被忽略,除非当在字符类或者前面非转义反斜杠,和,当一条线包含一个’#‘既不在字符类中或由非转义反斜杠,从最左侧的所有字符之前,这种’#'通过行末尾将被忽略。

关于re.X的一个例子:

a = re.compile(r"""\d +  # the integral part
                   \.    # the decimal point
                   \d *  # some fractional digits""", re.X)
b = re.compile(r"\d+\.\d*")

例如这里我匹配寻找百分数的模式:

re.compile(ur"GDP\u589e\u957f\d+%",re.I)#GDP增长X%

其他一些常用正则表达模块

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

上面的sentence代表要匹配的数据,flags和re.compile中的意思一致。
这里的search也可以作为编译模块的一个对象,如下:

p = re.compile(ur"GDP\u589e\u957f\d+%",re.I)
p.search(string)

search用于返回第一匹配到的字串,如果没有命中则返回None

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

从字符串首字符匹配,返回第一个成功的字符串,如果起始位置没有没有命中则返回None

re.split(pattern, string, maxsplit=0, flags=0)

切分字符串

-->re.split('\W+', 'Words, words, words.')
-->['Words', 'words', 'words', '']
-->re.split('(\W+)', 'Words, words, words.')
-->['Words', ', ', 'words', ', ', 'words', '.', '']
re.findall(pattern, string, flags=0)

找出所有符合这个模式的字符串

re.finditer(pattern, string, flags=0)
re.sub(pattern, repl, string, count=0, flags=0)

字符串替换

re.subn(pattern, repl, string, count=0, flags=0)

执行相同的操作,如sub(),但返回一个元组(new_string, number_of_subs_made)

re.escape(pattern)

返回的字符串与所有非字母数字带有反斜

re.purge()

清除正则表达式缓存

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值