Python正则

1.re.match(p,text)

找到后马上返回,从头开始匹配


2.re.search(p,text)

找到后马上返回


3.re.findall(p,text)

寻找多个,返回找到的列表


4.re.split(p,text)

找到匹配模式,然后分开


5.re.sub(p,s,text)

替换

找到模式的字符串替换成s


6.编译模式对象

pattern=re.compile(pa)


results=pattern.match(text)


7. text = 'c++ python2 python3 perl ruby lua java javascript php4 php5 c'



8.元字符

*零个或者多个

^从头开始匹配

+重复一次或多次

$结尾匹配

.匹配任意字符

[]范围eg:[a-zA-Z]

?匹配0个或1个

{}匹配次数范围

^在[]中时,表示非

|表示或者


9.

\w [a-zA-Z0-9_] \W

\d [0-9] \D

\s [ \t\n\r\f\v] \S


\b 单词边界(单词的开头或结尾)eg:

 re.findall(r'\bp[^0-9]+',text)==>[‘python', 'python', 'perl ruby lua java javascript php', 'php']


re.findall(r'p[^0-9]\b',text) ==>['pt']


10.()贪婪模式(尽可能多/少的匹配)

*?

+?

 re.findall(r'c[a-z\+]*',text)==>['c++', 'cript', 'c']


re.findall(r'c[a-z\+]*?',text) ==>['c', 'c', 'c']


11.分组

()

(?P<name>pattern)


pattern = re.compile(r'(?P<name>p[a-zA-Z]+)(?P<version>[0-9])')

results = pattern.search('python2')

print results.groupdict()==>{'version': '2', 'name': 'python'}


results = pattern.findall(text)==>[('python', '2'), ('python', '3'), ('php', '4'), ('php', '5')]


12.编译模式

a = re.compile(r"""\d +  # 整数部分

                   \.    # 小数点

                   \d *  # 小数部分

                """, re.X)

去掉空格、换行符等,方便加注释


b = re.compile(r"\d+\.\d*")


##################################常用匹配#####################################

匹配中文字符的正则表达式: [\u4e00-\u9fa5]
评注:匹配中文还真是个头疼的事,有了这个表达式就好办了

eg:

w=u'我是Monkey的爸爸'
p=re.compile(ur"[\u4e00-\u9fa5]")
p.findall(w)	==>[u'\u6211', u'\u662f', u'\u7684', u'\u7238', u'\u7238']




匹配双字节字符(包括汉字在内):[^\x00-\xff]
评注:可以用来计算字符串的长度(一个双字节字符长度计2,ASCII字符计1)

匹配空白行的正则表达式:\n\s*\r
评注:可以用来删除空白行

匹配HTML标记的正则表达式:<(\S*?)[^>]*>.*?</\1>|<.*? />
评注:网上流传的版本太糟糕,上面这个也仅仅能匹配部分,对于复杂的嵌套标记依旧无能为力

匹配首尾空白字符的正则表达式:^\s*|\s*$
评注:可以用来删除行首行尾的空白字符(包括空格、制表符、换页符等等),非常有用的表达式

匹配Email地址的正则表达式:\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*
评注:表单验证时很实用

匹配网址URL的正则表达式:[a-zA-z]+://[^\s]*
评注:网上流传的版本功能很有限,上面这个基本可以满足需求

匹配帐号是否合法(字母开头,允许5-16字节,允许字母数字下划线):^[a-zA-Z][a-zA-Z0-9_]{4,15}$
评注:表单验证时很实用

匹配国内电话号码:\d{3}-\d{8}|\d{4}-\d{7}
评注:匹配形式如 0511-4405222 或 021-87888822

匹配腾讯QQ号:[1-9][0-9]{4,}
评注:腾讯QQ号从10000开始

匹配中国邮政编码:[1-9]\d{5}(?!\d)
评注:中国邮政编码为6位数字

匹配身份证:\d{15}|\d{18}
评注:中国的身份证为15位或18位

匹配ip地址:\d+\.\d+\.\d+\.\d+
评注:提取ip地址时有用


13.\w等在[]中时,需要在其他字符后面

false:[\w-_]

right:[-_w]


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值