| fullmatch(pattern, string, flags=0)
| match
函
数的完
全
匹配(从字符串开头
到
结
尾
)
版
本
|
| findall(pattern, string, flags=0)
|
查找字符串所有与正则表达式匹配的模式
返回
字符串的
列
表
|
| finditer(pattern, string, flags=0)
|
查找字符串所有与正则表达式匹配的模式
返回
一个
迭
代
器
|
| purge()
|
清除隐
式编
译
的正则表达式的
缓存
|
| re.I / re.IGNORECASE
|
忽略
大
小
写匹配标
记
|
| re.M / re.MULTILINE
|
多行匹配标
记
|
> **
说明:
**
上面提
到
的
re
模块中的这些
函
数,
实际
开
发
中也可以用正则表达式对
象
的方
法
替代对这些
函
数的使用,如果一个正则表达式需要重复的使用,那么
先
通过
compile
函
数编
译
正则表达式并
创建
出正则表
达式对
象无疑
是更为明
智
的
选择
。
下面我们通过一系
列
的例
子
来
告诉
大家在
Python
中如何使用正则表达式。
####
例
子
1
:
验证输
入用
户
名和
QQ
号是否有
效
并给出对
应
的提示信息。
```Python
"""
验证输
入用
户
名和
QQ
号是否有
效
并给出对
应
的提示信息
要求:用
户
名
必须由
字
母、
数字或下
划线构
成且
长度
在
6~20
个字符之
间
,
QQ
号是
5~12
的数字且
首
位不能为
0
"""
import re
def main():
username = input('
请输
入用
户
名
: ')
qq = input('
请输
入
QQ
号
: ')
# match
函
数的
第
一个
参
数是正则表达式字符串或正则表达式对
象
#
第二
个
参
数是要跟正则表达式做匹配的字符串对
象
m1 = re.match(r'^[0-9a-zA-Z_]{6,20}$', username)
if not m1:
print('
请输
入有
效
的用
户
名
.')
m2 = re.match(r'^[1-9]\d{4,11}$', qq)
if not m2:
print('
请输
入有
效
的
QQ
号
.')
if m1 and m2:
print('
你
输
入的信息是有
效
的
!')
if __name__ == '__main__':
main()
```
> **
提示:
**
上面在书写正则表达式时使用了“
原始
字符串
”
的写
法
(在字符串
前
面
加
上了
r
),所
谓
“
原始
字
符串
”
就是字符串中的
每
个字符都是它
原始
的意义,说得更
直接
一
点
就是字符串中没有所
谓
的
转
义字符
啦
。因
为正则表达式中有很多
元
字符和需要进行
转
义的地方,如果不使用
原始
字符串就需要将
反斜杠
写作
\\\\
,例

如表示数字的
\\d
得书写成
\\\\d
,这样不
仅
写起来不方
便
,阅读的时
候
也会很
吃力
。
####
例
子
2
:从一段文字中提取出国内手机号码。
下面这
张图
是
截止到
2017
年底
,国内
三
家运
营商推
出的手机号段。

```Python
import re
def main():
#
创建
正则表达式对
象
使用了
前瞻
和
回顾
来
保证
手机号
前
后不
应该
出
现
数字
pattern = re.compile(r'(?<=\D)1[34578]\d{9}(?=\D)')
sentence = '''
重要的
事情
说
8130123456789
遍
,我的手机号是
13512346789
这个
靓
号,
不是
15600998765
,也是
110
或
119
,


You've reached the end of your free preview.
Want to read all 5 pages?
- Fall '19