首页 > 其他 > 详细

正则表达式

时间:2019-08-21 18:31:50      阅读:74      评论:0      收藏:0      [点我收藏+]

正则表达式学习

一、元字符

“^”匹配行或者字符串起始位置(^dige:指以肖为开头)

“$”匹配行货字符串的结尾

“\b”匹配单次边界,通常用于匹配单个字符(/bxiaosheng/b:匹配xaosheng,/b不会匹配xiaosheng两边的字符,但会识别xiaosheng)

“\d”:匹配数字(比如匹配一个电话号码以4结尾前3位:15797681784,\d\d\d4$,re.compile(‘\d\d\d4$‘).findall(s))

“\w”匹配字母,数字,下划线(_\w+:匹配下划线后的字符串,\w{3}_+:匹配下划线前3个字符)

“\s”匹配空格(例如匹配xiao sheng ,“\w+\s\w+”匹配空格前后的所有字符)

“.”匹配除了换行符以外的任何字符,(例如匹配xiao123@#789 leave,".+"匹配所有字符)

“【abc】”:字符组,匹配包含括号内元素的字符(例如匹配123wdf@456中的字母,[a-z])

二、几种反义

“\W”匹配任意不是字母,数字,下划线的字符

“\S”匹配任意不是空白符的字符

“\D”匹配任意非数字的字符

“\B”匹配不是单词开头或结束的位置

“[^abc]”匹配除abc以外的任意字符

三、量词

“*”重复零次或更多(例如:‘aaaaaa’,“a*”匹配所有字符a)

‘+’重复一次或更多次(“+”和‘*’区别在于*可以是0次)

“?”重复一次或者更多次(‘aaaaaaa’,a?表示只匹配1次a)

“??”重复0次或1次,但尽可能少重复(‘aaacb’,a.??bb得到的是“acb”)

“{n,m}?”重复n到m次,但尽可能少重复(‘aaaaa’,a{0,m}因为最少是0次所以取到的结果为空)

“{n,}?”重复n次以上,但尽可能少重复

四、正则进阶

“(exp)”匹配exp,并捕获文本到自动命名的组里

“(?<name>exp)”匹配exp,并捕获文本到名称为那么的组里

“(?:exp)”匹配exp,不捕获匹配的文本,也不给此分组分配组号

“(?=exp)”匹配exp前面的位置

“(?<=exp)”匹配exp后面的配置(“to be or not to be ,this is the question”,(?<txt>.+(?=question)))

“(?!exp)”匹配后面跟的不是exp的位置(‘123abc’,‘\d{3}(?!\d)’匹配3位数字后面非数字的结果)

“(?<!exp)”匹配前面不是exp的位置

代码参考:

#ecoding:utf-8
import re
s = 15797681784
d = a2345BCD_TTz好怂
e =xiang leave
f = xiao123@#789 leave
g = 123wdf@456
h = xiaoshengwat
f = to be or not to be,this is the question
print(re.compile(\d\d\d4$).findall(s))
print(re.compile(_\w+).findall(d))
print(re.compile(\w{3}_+).findall(d))
print(re.compile(\w+\s\w+).findall(e))
print(re.compile(.+).findall(f))
print(re.compile([a-z]).findall(g))
print(re.compile((xiao)).findall(h)

运行结果:

[1784]
[_TTz好怂]
[BCD_]
[xiang leave]
[xiao123@#789 leave]
[w, d, f]
[xiao]

 

正则表达式

原文:https://www.cnblogs.com/xswt/p/11390345.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!