from re import compile
percent = compile('([1-9]?[0-9]|100)%’) # 百分比
date = compile(r'20\d{2}-(0[1-9]|1[012])-(0[1-9]|[12]\d|3[01])’)
time = compile("([01]\d|2[0-3]):([0-5]\d):([0-5]\d)")
weather = compile("(阴|晴|(浓?雾)|(多云)|霾|(浮尘)|(扬沙)|(强?沙尘暴)|(霜冻)|(冻雨)|(雨加雪)|(雨夹雪)|(冰雹)|(雷阵雨(并伴有冰雹)?)|((阵|小|中|大|暴|(特?大暴))(到(阵|小|中|大|暴|(大暴)))?(雨|雪)))(转.)*”)
temperature = compile("-?[1-9]?[0-9]{0,1}(.[1-9])?℃")
regex = re.compile(pattern, flag=0)
result = regex.search(string)
raw srting:忽视转义字符'\'的字符类型
简写为r'text'
默认为贪婪匹配,即匹配符合的最长字符串;在标识前一个字符能出现多次的表达式后加问号即可改为最小匹配。
属性名称 | 内容 |
.string | 待匹配的文本 |
.re | 匹配所用的正则表达式 |
.pos | 搜索范围的开始位置 |
.endpos | 搜索范围的结束位置 |
方法名 | 用途 |
.group() | 获得每个表达式中括号对应的文本,0代表表达式整体 |
.start() | 获得表达式对应文本的开始位置 |
.end() | 获得表达式对应文本的结束位置 |
.span() | (.start(), .end()) |
函数 | 功能 |
re.search(pattern, string, flag=0) | 返回符合pattern的子串的match对象 |
re.match(pattern, string, flag=0) | 必须从串首起匹配,其余同search |
re.finditer(pattern, string, flag=0) | 返回符合子串的match对象的迭代器 |
re.findall(pattern, string, flag=0) | 返回符合子串的列表 |
re.split(pattern, string, maxsplit=0, flag=0) | 按pattern分割string并返回列表 |
re.sub(pattern, repl, string, count=0, flag=0) | 将每个符合pattern的子串替换 |
常量名 | 简写 | 功能 |
re.IGNORECASE | re.I | 忽略大小写 |
re.MULTILINE | re.M | 允许^匹配string中每行的开头 |
re.DOTALL | re.S | 允许.操作符匹配换行符 |
表达式 | 作用 |
. | 对应一个任意字符 |
[] | 对应一个其中字符 |
[^] | 对应一个不在其中的字符 |
* | 前一个字符出现0次或以上 |
+ | 前一个字符出现1次或以上 |
? | 前一个字符出现0次或1次 |
{m} | 前一个字符出现m次 |
{m, n} | 前一个字符出现m次到n次(含n次) |
| | 左字符串或右字符串 |
^ | 匹配字符串头 |
$ | 匹配字符串尾 |
() | 分组标记,其中只支持|符号 |
\d | 匹配所有数字 |
\w | 匹配大小写字母、数字和下划线 |
[\u4e00-\u9fa5]