python之正则表达式
Python中写正则表达式时推荐使用原生字符串
数量词的贪婪模式与非贪婪模式
正则表达式通常用于在文本中查找匹配的字符串。Python里数量词默认是贪婪的(在少数语言里也可能是默认非贪婪),总是尝试匹配尽可能多的字符;非贪婪的则相反,总是尝试匹配尽可能少的字符。例如:正则表达式"ab*"如果用于查找"abbbc",将找到"abbb"。而如果使用非贪婪的数量词"ab*?",将找到"a"。
正则表达式元字符
^ 匹配字符串的开始
$ 匹配字符串的结束
? 对于前一个字符字符重复0次到1次
* 对于前一个字符重复0次到无穷次
+ 对于前一个字符重复1次到无穷次
{m} 对于前一个字符重复m次
{m,n} 对前一个字符重复为m到n次
\d 匹配数字,相当于[0-9]
\D 匹配任何非数字字符,相当于[^0-9]
\s 匹配任意的空白符,相当于[ fv]
\S 匹配任何非空白字符,相当于[^ fv]
\w 匹配任何字母数字字符,相当于[a-zA-Z0-9_]
\W 匹配任何非字母数字字符,相当于[^a-zA-Z0-9_]
. 匹配除换行符以外的任意字符
[...] 字符集,所有的特殊字符在这里都是去意义(除了]、-、^, 这几个可以用\转义)
匹配模式
re.I(re.IGNORECASE): 忽略大小写(括号内是完整写法,下同)
M(MULTILINE): 多行模式,改变‘^‘和‘$‘的行为(参见上图)
S(DOTALL): 点任意匹配模式,改变‘.‘的行为(.可以跨行匹配)
L(LOCALE): 使预定字符类 \w \W \b \B \s \S 取决于当前区域设定
U(UNICODE): 使预定字符类 \w \W \b \B \s \S \d \D 取决于unicode定义的字符属性
X(VERBOSE): 详细模式。这个模式下正则表达式可以是多行,忽略空白字符,并可以加入注释。
常用的正则表达式处理函数
1.re.search(pattern, string, flags=0)
re.search 函数会在字符串内查找模式匹配,直至找到第一个匹配然后返回,如果字符串没有匹配,则返回None。
第一个参数:规则
第二个参数:表示要匹配的字符串
第三个参数:标致位,用于控制正则表达式的匹配方式
name="Hello,My name is kuangl,nice to meet you..." k=re.search(r‘k(uan)gl‘,name) if k: printk.group(0),k.group(1) else: print"Sorry,not search!" ------------------------- kuangl uan
2.re.match(pattern, string, flags=0)
re.match 尝试从字符串的开始匹配一个模式,也等于说是匹配第一个单词
name="Hello,My name is kuangl,nice to meet you..." k=re.match(r"(\H....)",name) if k: print k.group(0), k.group(1) else: print"Sorry,not match!" -------------------------- Hello Hello
re.match与re.search的区别:re.match只匹配字符串的开始,如果字符串开始不符合正则表达式,则匹配失败,函数返回None;而re.search匹配整个字符串,直到找到一个匹配。
3.re.findall(pattern, string, flags=0)
返回的结果是一个列表,建中存放的是符合规则的字符串,如果没有符合规则的字符串呗找到,就会返回一个空值。
mail=‘<[email protected]> <[email protected]> [email protected]‘ re.findall(r‘(\w+@mail.[a-z]{3})‘,mail) ---------------------------------------------------- [‘[email protected]‘, ‘[email protected]‘, ‘[email protected]‘]
4、re.sub(pattern, repl, string, count=0)
re.sub 用于替换字符串的匹配项
第一个参数:规则
第二个参数:替换后的字符串
第三个参数:字符串
第四个参数:替换个数。默认为0,表示每个匹配项都替换
test="Hi, nice to meet you where are you from?" re.sub(r‘\s‘,‘-‘,test) re.sub(r‘\s‘,‘-‘,test,5) --------------------------------------- ‘Hi,-nice-to-meet-you-where-are-you-from?‘ ‘Hi,-nice-to-meet-you-where are you from?‘
5.re.split(pattern, string, maxsplit=0)
test="Hi, nice to meet you where are you from?" re.split(r"\s+",test) re.split(r"\s+",test,3) -------------------------------------------------- [‘Hi,‘, ‘nice‘, ‘to‘, ‘meet‘, ‘you‘, ‘where‘, ‘are‘, ‘you‘, ‘from?‘] [‘Hi,‘, ‘nice‘, ‘to‘, ‘meet you where are you from?‘]
6.re.compile(pattern, flags=0)
可以把正则表达式编译成一个正则对象
pattern = re.compile(r‘hello‘) match = pattern.match(‘hello world!‘) print match.group() ------------------------------------- hello
2015-05-09
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。