正则表达式
常用语法
- \d 可以匹配数字
- \w 可以匹配字母或者数字
- xx. 结语匹配带 xx 的字符串
- [*] 表示一个字符串
- [+]表示至少一个字符串
- ? 表示0个或者1个字符
- {n} 表示 n 个字符
- {n, m} 表示 (n,m)范围内个字符
- \s 表示可以匹配一个空格,包括Tba等空白符
- \s + 表示至少有一个空格
- A | B 表示 A或B
- ^ 表示行的开头
- ^\d 表示必须数字开头
- $ 表示行的结尾
- \d$ 表示必须数字结束
- 16.
实例
[\d{3}\s+\d{3,8}]
- \d 表示数字
- {3} 表示3个字符
- \s + 表示至少一个空格
- \d 表示数字
- {3,8} 表示3到8个数字
上述即 前面3位要数字,至少一个空格,后面3-8个数字
例如 “123 123”, “123 1234”,“123 45623”
[0-9a-zA-Z_]
- 0-9 表示0-9内的字符
- a-z 表示小写字母
- A-Z 表示大写字母
- _ 表示下划线
综合上述 可以匹配一个数字、字母或者下划线
[0-9a-zA-Z_] +
可以匹配至少由一个数字、字母或者下划线组成的字符串
[a-zA-Z_][0-9a-zA-Z_]
表示:[字母或者下划线][匹配至少由一个数字、字母或者下划线组成的字符串]
[a-zA-Z_][0-9a-zA-Z_]{0,19}
表示:[字母或者下划线][匹配至少由一个数字、字母或者下划线组成的字符串]{字符数量在0-19个内}
(P|p)ython
表示可以匹配 Python或者python
Python的正则表达式 - re模块
match 正则匹配
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python的正则表达式 - re模块
import re
# 正则匹配
def test():
result = re.match(r"\d", "Hello")
# None 表示不匹配
print(result)
result = re.match(r"\d", "123")
# 详细匹配信息 <_sre.SRE_Match object; span=(0, 1), match='1'>
print(result)
test()
运行结果
D:\PythonProject\sustudy>python main.py
None
<_sre.SRE_Match object; span=(0, 1), match='1'>
split 切分字符串
运行示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python的正则表达式 - re模块
import re
# 切分字符串
def test():
# \s+ 表示至少一个字符
result = re.split(r"\s+", "H ell o")
# ['H', 'ell', 'o']
print(result)
# [\s\,\;]+
# [\字符\逗号\分号]至少
result = re.split(r"[\s\,\;]+", "H,ell;o")
# ['H', 'ell', 'o']
print(result)
test()
运行结果
D:\PythonProject\sustudy>python main.py
['H', 'ell', 'o']
['H', 'ell', 'o']
group 分组
运行示例
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Python的正则表达式 - re模块
import re
# group
def test():
# [(\d{3})-(\d{3,8})]
# [(数字{3个})-(数字{3~8个内数字})]
result = re.match(r"(\d{3})-(\d{3,8})", "010-123456")
# <_sre.SRE_Match object; span=(0, 10), match='010-123456'>
print(result)
if result:
# 010-123456
print(result.group(0))
# 010
print(result.group(1))
test()
运行结果
D:\PythonProject\sustudy>python main.py
<_sre.SRE_Match object; span=(0, 10), match='010-123456'>
010-123456
010