正则表达式各个语言的语法都一样,但是支持程度可能不同,python中的正则表达式可能效率不如str某些自带的方法,
但是它的功能是非常强大的。
先说说常用的正则表达式语法,然后说说python中的正则表达式模块
一.常用的正则表达式语法
1.管道符号 |
逻辑或的意思,即匹配任意一个即可
2. 匹配任意字符符号 .
即匹配任意一个字符
3.限定开头和结尾符号 ^ 和 $
^ 限定匹配的开头 ^hello 必须以hello开头
$限定匹配的结尾 world$ 必须以world结尾
配合使用 ^helloworld$ 匹配helloworld
补充:
\b和\B也用来匹配单词边界,\b匹配的必须是开头,\B是从单词中间开始匹配
匹配关键字字符要加反斜线 '\'
4.[ ],匹配[]中的任意一个字符
类似c++的string.find_first_of(str),在string搜寻到str出现的第一个字符
这里[ ]就类似str,只是匹配任意的而已
[ ]可以组合多个[ ][ ][ ] ,注意多个[ ]匹配结果是较多的,如果我们只匹配个别的话,用更严格的匹配效率会高
例子:
h[i,e],匹配出来包含hi和he
5.指定范围‘-’ 和否定 '^'
[123456789]等价于[1-9]
不匹配[1-9]等价于[^1-9]
6.(*, +, ?, {} )
*表示匹配它左边的正则表达式出现0或者0次以上
例如:ba*匹配b, ba, baa...
+表示匹配它左边的正则表达式出现至少一次以上
例如:ba+匹配ba, baa...
?表示匹配它左边的正则表达式出现0或者一次以上
例如:ba?匹配b, ba, baa...
{}表示出现次数的限定{9}出现9次,{1-9}出现1-9次中任何即可
例如:ba{1-2}匹配ba, baa
注意:?问号还有一种含义,在紧跟着上述表示重复符号的后面时,表示匹配的字符串越短越好
7.匹配特殊字符集合
\d可以表示匹配[0-9]数字,\D表示不匹配十进制数字字符
\w表示整个字符数字集合[A-Za-z0-9]
\s表示空白字符
练习:
<1.电话号码: 888-222-2020
\d{3}-\d{3}-\d{4}
<2.邮箱XXX@XXX.com
\w+@\w+\.com ( 注意 . 是特殊字符,要加上\ ,为\. )
8.元括号( )组建组
我们可以匹配出我们想要匹配的数据,但是如果我们有时对我们需要匹配的数据部分或者全部感兴趣想要看看他们
是什么并且运用它而不是仅仅知道它是否在里面,那么就要用到( )来把我们想要的匹配结果保存下来
比如\d+(\.\d*)?, 表示浮点数
加上括号我们可以对小数点后面的数据(( )中的数据)进行访问了。
二.python中的正则表达式
#!/usr/bin/env python
#coding:UTF-8
import re
pattern = re.compile('^hel')
m = pattern.match('hello world!')
if m:
print m.group()
print type(m.group())
else:
print 'none'
#!/usr/bin/env python
#coding:UTF-8
import re
Str = 'hello world'
m = re.match('hello', Str)
if m is not None:
print m.group()
print type(m.group())
else:
print 'not found'
#!/usr/bin/env python
#coding:UTF-8
import re
Str = 'hello world'
m = re.search('o w', Str)
if m is not None:
print m.group()
print type(m.group())
else:
print 'not found'