基本示例
import re
Regex = re.compile(r'\d\d\d-\d\d\d-\d\d\d\d')
mo = Regex.search('123-233-4325')
print(mo.group())
基本符号
1. 括号:()
- 创建分组
- 示例:phoneNumRegex = re.compile(r’(\d\d\d)-(\d\d\d-\d\d\d\d)’)
- mo.group()的传入参数:①为0或不传时返回整个匹配的文本②为其他整数时返回第n个分组的文本
2. 管道:|
- "或"符号,匹配许多表达式中的一个
- 示例:heroRegex = re.compile (r’Batman|Tina Fey’)
3. 问号:?
- 表明它前面的分组在这个模式中是可选的,即匹配这个问号之前的分组零次或一次
- 示例:batRegex = re.compile(r’Bat(wo)?man’)
- 还用以表示非贪心匹配
4. 星号:
- 匹配零次或多次”,即星号之前的分组,可以在文本中出现任意次
- 示例:batRegex = re.compile(r’Bat(wo)*man’)
5. 加好:+
- 意味着“匹配一次或多次”,即加号之前的分组至少匹配一次
- 示例:batRegex = re.compile(r’Bat(wo)+man’)
6. 花括号:{}
- 分组重复特定次数
- 示例:haRegex = re.compile(r’(Ha){3}’)
- 可以指定一个范围,如(Ha){3,5}
①默认是贪心匹配,返回匹配次数最大的文本
②非贪心匹配:re.compile(r’(Ha){3,5}?’)
7. 插入字符(^)美元字符($)
- 插入符号(^),表明匹配必须发生在被查找文
本开始处
- 美元符号(KaTeX parse error: Undefined control sequence: \d at position 45: …:re.compile(r'^\̲d̲+’)用以匹配从开始到结束都是数字的字符串
8. 通配符(.)
- 匹配除了换行之外的所有字符,但句点字符只匹配一个字
- 示例:re.compile(r'.at')
9. 点-星匹配所有字符(.*)
- 匹配所有字符串
- 示例:re.compile(r'First Name: (.*) Last Name: (.*)')
- 默认贪心模式,非贪心模式:re.compile(r'<.*?>')
10. 字符分类
\d:0 到 9 的任何数字
\D:除 0 到 9 的数字以外的任何字符
\w:任何字母、数字或下划线字符(可以认为是匹配“单词”字符)
\W:除字母、数字和下划线以外的任何字符
\s:空格、制表符或换行符(可以认为是匹配“空白”字符)
\S:除空格、制表符和换行符以外的任何字符
基本方法
- re.compile(r’\d\d\d-\d\d\d-\d\d\d\d’):返回一个Regex对象
- re.compile(’.*’, re.DOTALL):将匹配所有字符(包括换行符)
- re.compile(r’robocop’, re.I):匹配时不区分大小写
- Regex.search(‘123-233-4325’):返回Match对象,返回值中仅含有匹配的第一个文本
- Regex.findall(‘123-233-4325’):返回字符串,返回值中含有匹配的所有文本
- mo.group():返回匹配文本的字符串
- mo.groups():返回获取的所有分组
- Regex.sub():用新的文本替换匹配到的文本。参数:①用于取代发现的文本②待查找文本
注意
- 复杂正则表达式多行表示:
phoneRegex = re.compile(r'''(
(\d{3}|\(\d{3}\))?
(\s|-|.)?
\d{3}
(\s|-|.)
\d{4}
(\s*(ext|x|ext.)\s*\d{2,5})?
)''',re.VERBOSE)