.(句点)匹配除了换行之外的所有一个字符, .*(点-星)匹配除了换行外的所有字符
>>> >>> r=re.compile(r'.*') >>> r.search('How are you\nFine thank you and you\nI am fine too').group() 'How are you' >>>
这个例子可以看出.*(点-星)匹配除了换行外的所有字符,但无法匹配换行符,如何匹配包括换行符的所有字符呢?
1、通过传入re.DOTALL或者re.S作为re.compile()的第二个参数
>>> >>> r=re.compile(r'.*',re.DOTALL) >>> r.search('How are you\nFine thank you and you\nI am fine too').group() 'How are you\nFine thank you and you\nI am fine too' >>> r=re.compile(r'.*',re.S) >>> r.search('How are you\nFine thank you and you\nI am fine too').group() 'How are you\nFine thank you and you\nI am fine too' >>>
2、通过 (.|\n)* 正则表达式来匹配所有字符
>>> >>> r=re.compile(r'(.|\n)*') >>> r.search('How are you\nFine thank you and you\nI am fine too').group() 'How are you\nFine thank you and you\nI am fine too' >>>
除了re.DOTALL外,re.IGNORCASE(等价于re.I),re.MULTILINE(re.M),也是很有用的参数
re.IGNORCASE可以忽略大小写
>>> >>> r=re.compile(r'hello',re.I) >>> r.findall('Hello hello world heLLo') ['Hello', 'hello', 'heLLo'] >>>
正则表达式字符介绍:详细的可见维基百科介绍
//常用字符的使用介绍
在正则表达式中 \ 的意思是代表转义字符
在正则表达式中 . 的意思是代表任意字符
在正则表达式中 * 的意思是代表任意个字符(包含零个)
在正则表达式中 + 的意思是代表一个或者多个字符(不包含零个)
在正则表达式中^ 的意思是代表开始位置(如果用在[之内也有相反的意思])
在正则表达式中 $ 的意思是代表结束位置
在正则表达式中 [……]的意思是代表或者的意思比如[a-zA-Z]的意思是a到z或者A-Z之间的随意一个都可以
在正则表达式中(.....) 的意思是代表分组
在正则表达式中 $1 的意思是代表引用分组1的数据
在正则表达式中 {4} 的意思是代表相同的4个;这里代表是量词的意思,比如说:
(/d/d/d/d是四个数字但是可以简写为/d{4};这里包含前面的字符,一共四次,循环了三次)
也可以是
(/d{2,4};这里包含前面的字符,共2到4个数字,循环了一到三次)
在正则表达式中 /d 的意思是代表数字
在正则表达式中 /D 的意思是代表非数字
在正则表达式中 /b 的意思是代表一个单词的边界
在正则表达式中 /B 的意思是代表非单词的边界
在正则表达式中 /g 的意思是代表全局(global)
在正则表达式中 /i 的意思是代表忽略大小写,(ignore case)默认大小写敏感
在正则表达式中 /m 的意思是代表多行,(multiple lines )多行搜索
预定义类:
在正则中特殊字符大写表示取反,比如/d代表数字,则/D代表非数字与[^0-9]相同
字符 等价类 含义
. [^\r\n] 除了回车符合换行符之外所有的字符
\d [0-9] 数字字符
\D [0-9] 非数字字符
\s [\t\n\x0b\f\r] 空白符
\S [^\t\n\x0b\f\r] 非空白符
\w [a-zA-z_0-9] 单词字符(字母,数字下划线)
\W [^a-zA-z_0-9] 非单词字符
如对本文有疑问,请提交到交流论坛,广大热心网友会为你解答!! 点击进入论坛