- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Python的正则表达式笔记
通常的表达式:
match = re.search(par, str)
par为正则表达式(匹配模式),str为将要去匹配的字符串
规则:靠左匹配;最大化匹配
正则表达式的参考表格
正则表达式参考分类和作用
元字符 作用 示例 [] 匹配单个字符 [abc]匹配a,b或者c
[a-c]同上
[a-z]匹配所有的小写字符(一个) ^ 求反 [^5]匹配除了5以外的任何一个字符 \ 转义 \\用来匹配\;\[用来匹配[ 预定义的字符组 \w匹配文字和数字字符=[a-zA-Z0-9]注:unicode情况下,匹配unicode字符
\W匹配非文字和数字字符
\d匹配数字=[0-9]
\D匹配非数字=[^0-9]
\s匹配任何空格符=[\t\n\r\f\v]
\S匹配非空格符= [^ \t\n\r\f\v]
\t tab键 \n 新行 \r 回车 . 任何字符 | 或 Crow|Servo匹配Crow或者Servo ^ 字符串的开头
多行模式下,新行的开头 ^From来匹配’From Here’ \A 字符串的开头 $ 字符串的结尾
多行模式下,为新行的结尾 如用}$来匹配{block} \Z 字符串的结尾 \b 单词边界 r’\bclass\b’来匹配’no class at all’,不能匹配’one subclass is’
两个\b可认为代表空格 \B 非单词边界 r’\Bher\B’来匹配’go to there.’但是不能用来匹配’go for her.’ 重复 作用 示例 * 0到多次重复 ca*t匹配ct、cat、catt……(最长20亿个a) + 1到多次重复 ca+t匹配cat、catt…… {m,n} m到n次重复 a/{1,3}b匹配a/b、a//b、a///b 组 作用 示例 () 组 (ab)匹配0个到多个ab的重复
(\w)匹配一个单词(近似)
附:用match.group()可以更加灵活的匹配,如下例
str = purple alice-b@ monkey dishwasher
match = re.search(([\w.-]+)@([\w.-]+), str)
if match:
print match.group()
# alice-b@ (the whole match)
print match.group(1)
# alice-b (the username, group 1)
print match.group(2)
# (the host, group 2)
不用()也能匹配出邮件地址,但是用()之后,可很简单的得出匹配的子字符串
附2:嵌套的(),如果是(a(b)c),则group(1)是abc,group(2)是b
(?:...) 非捕获组 ...为任何正则表达式,不匹配则返回正常值 (?Pname...) 捕获后的特殊输出方法 p = pile(r(?Pword\b\w+\b))
m = p.search( (((( Lots of punctuation ))) )
m.group(word)
Lots
m.group(1)
Lots
用名字来取得匹配的group子字符串
(?P=name) 捕获双重单词 p = pile(r(?Pword\b\w+)\s+(?P=word))
p.search(Paris in the the spring).group()
the the
(?P=word)其实表示在第一个group(‘word’)在匹配之后查看之后是不是同一个单词 (?=...) 先行断言:存在 如在HTML源代码内匹配超链接,必须存在href开头,用(?=href”)匹配定位 (?!...) 先行断言:不存在 如匹配一个非bat扩展名结尾的文件
.*[.](?!bat$).*$
注意:
为了防止\字符的泛滥,用原始字符串r标示符替代匹配字符串;如为了匹配\section,匹配字符串原定义为为”\\\\section”,将之改为r”\\section”
常见函数:
findall()
## Suppose we have a text with many email addresses
str = purple alice@, blah monkey bob@ blah dishwasher
## Here re.findall() returns a list of all the found email strings
emails = re.findall(r[\w\.-]+@[\w\.-]+, str) ## [alice@, bob@]
for email in e
文档评论(0)