- ^ : 表示匹配字符串的起始位置
- ? : 表示匹配起前面的子表达式(或字符) 0 次或一次
- * : 表示匹配前面的子表达式任意次
- + : 表示匹配前面的子表达式至少一次 , 例如a+b 可以匹配 aab , aaab, aaaab,…
- {n} : n 是一个非负整数。匹配确定的 n 次。例如,‘o{2}’ 不能匹配 “Bob” 中的 ‘o’,但是能匹配 “food” 中的两个 o
- {n,} : 至少匹配n 次,请注意在逗号和两个数之间不能有空格。
- {n,m} : m 和 n 均为非负整数,其中n <= m。表示最少匹配 n 次且最多匹配 m 次,请注意在逗号和两个数之间不能有空格。
- [0-9]+ : [0-9] 匹配**[]内的单个字符**,如[a-z0-9]等
- [^ ] : 方括号内 ^表示 否定,表示不匹配括号内的任意一个字符
- abc$ : $为匹配字符串结束,这里表示为以abc为结尾
- . : 匹配除换行符(n、r)之外的任何单个字符,相等于 [^nr]
- w : 匹配字母、数字、下划线。等价于 [A-Za-z0-9_]
- [sS] :匹配所有。s 是匹配所有空白符,包括换行,S 非空白符,不包括换行。
Python 正则表达式 | 菜鸟教程 (runoob.com)
re是python内置模块,使用时直接导入即可
| 方法 | 说明 |
|---|---|
| compile(pattern) | 编译正则表达式,生成一个正则表达式( Pattern )对象,供 match() 和 search() 这两个函数使用 |
| search(pattern, string) | 扫描整个字符串并返回第一个成功的匹配, 否则返回None |
| match(pattern, string) | 尝试从字符串的起始位置匹配一个模式(pattern),如果不是起始位置匹配成功的话,match() 就返回 none |
| split(pattern, string) | 按照能够匹配的子串将字符串分割后返回列表 |
| findall(pattern, string) | 在字符串中找到正则表达式所匹配的所有子串,并返回一个列表,如果有多个匹配模式,则返回元组列表,如果没有找到匹配的,则返回空列表 |
实例
# -*- coding:UTF8 -*-
import re
pattern = re.compile(r'd+') # 查找数字
result1 = pattern.findall('runoob 123 google 456')
result2 = pattern.findall('run88oob123google456', 0, 10)
print(result1) #['123', '456']
print(result2) #['88', '12']
import re
result = re.findall(r'(w+)=(d+)', 'set width=20 and height=10')
print(result) #[('width', '20'), ('height', '10')]
c++正则表达式库 regex
| 方法 | 说明 |
|---|---|
| regex | 表示一个正则表达式的类 |
| regex_match | 将一个字符与一个正则表达式匹配 |
| regex_search | 寻找第一个与正则表达式匹配的子序列 |
| regex_replace | 使用给定格式替换一个正则表达式 |
| sregex_iterator | 迭代器适配器,调用regex_search来遍历一个string中所有匹配的字串 |
| smatch | 容器类,保存在string中搜索的结果 |
| ssub_match | string中匹配的子表达式的结果 |
如查找一个违反拼写规则的单词:i 除非在 c 之后, 否则必须在 e 之前



