Python的正则表达式(一)

来源:互联网 发布:淘宝反渗透膜 编辑:程序博客网 时间:2024/06/06 02:19

Python的re模块是专门用来处理正则的

import re

字符匹配分普通字符和元字符,普通字符就是直接匹配,元字符是模糊匹配,今天学了几个元字符,mark一下

1、^

用于指定只和行首匹配

s=r'^t're.findall(s, 'tan, tbn, ttt')

返回tan中的t,注意^符号放于首位

如果要匹配^自身的字符,则使用转义符'\',这里和c语言的\n\r\t等类似

s=r'\^ta're.findall(s, 'tan, ^tan, ttt')

返回^ta,这里没限定是否在行首匹配,在任何位置都可以

2、$

用于指定只和行尾匹配

s=r't$'re.findall(s, 'tan, tbn, ant')

返回ant中的t,注意$符号放于末尾

如果要匹配$自身的字符,则使用转义符'\'

s=r't\$'re.findall(s, 'tan, t$bn, ant')

返回t&,同样没有限定在行尾匹配,任何位置都可以

3、[ ] 

用于指定一个字符

s = r't[abc]n're.findall(s,'tan,tbn,tcn,tdn')

返回 tan tbn tcn,表示abc三字母中的任意一个匹配,同理[a-z]表示任意一个字母,[0-9]表示任意一个数字,[0123456789]这也可以!

在[]中的元字符都是不起作用的

s = r't[abc$]'re.findall(s,'ta,tb,t$,tt')

返回ta tb t$,不返回t,因为这里$不起行尾的作用,只是简单的一个‘$’字符

但^在[]中有取反的作用

s = r't[^abc]n're.findall(s,'tan,tbn,tcn,tdn')

返回tdn,意味着不取abc中的字母。那么如何像‘$’那样在[]表示字符呢

s = r'[abc^]t're.findall(s,'^t,at,bt,dt,^t')

这样既可,返回^t,at,bt,^t。

============================

继续之前的转义字符

\d 表示所有的十进制数

\D表示所有的非十进制数

\w表示所有的字母大小写和数字

\W表示所有的非字母大小写和数字

\s表示所有的空白[\t\n]

\S表示所有的非空白

============重复===============

s = r'^010-[0-9]{8}'re.findall(s,'010-81892274')

{n}表示前面的字符重复n次

{m,n}表示前面的字符重复m-n次

*匹配零次或多次

s = r'^010-[0-9]*'re.findall(s,'010-81892274')

返回010-81892274

?匹配零次或一次

s = r'^010-[0-9]?'re.findall(s,'010-81892274')

返回010-8

+至少匹配一次(贪婪)

s = r'^010-[0-9]+'re.findall(s,'010-81892274')

返回010-81892274

+?至少匹配一次(非贪婪)

s = r'^010-[0-9]+?'re.findall(s,'010-81892274')

返回010-8

0 0
原创粉丝点击