|
python3 re正则相关资料和教程regex
符号 | 描述 | 示例 | . | 匹配除换行符(\n)之外的任意单个字符 | 字符串123\n456,匹配123:1.3 | ^ | 匹配字符串开头 | abc\nxyz,匹配以abc开头的行:^abc | $ | 匹配字符串结尾 | abc\nxyz,匹配以xyz结束的行:xyz$ | * | 匹配多个 | hello\nword,匹配以w开头d结尾的单词:w*d | + | 匹配1个或多个 | abc\nabcc\nadf,匹配abc和abcc:ab+ | ? | 匹配0个或1个 | abc\nac\nadd,匹配abc或ac:a?c | [.] | 匹配中括号之中的任意一个字符 | abcd\nadd\nbbb,匹配abcd和add:[abc] | [ .-.] | 匹配中括号中范围内的任意一个字符 | abcd\nadd\nbbb,匹配abcd和add:[a-c] | [^] | 匹配[^字符]之外的任意一个字符 | abc\n\abb\nddd,不匹配abc和abb:[^a-c] | {n}或{n,} | 匹配花括号前面字符至少n个字符 | 1\n\12\n123\n1234,匹配123和1234:[0-9]{3} | {n,m} | 匹配花括号前面字符至少n个字符,最多m个字符 | 1\n\12\n123\n1234\n12345,匹配123和1234 :[0-9]{3,4} | | | 匹配竖杠两边的任意一个 | abc\nabd\abe,匹配abc和abd:ab(c|d) | \ | 转义符,将特殊符号转成原有意义
| 1.2,匹配1.2:1\.2,否则112也会匹配到
|
特殊字符 | 描述 | 示例 | \A | 匹配字符串开始 | 与^区别是:当使用修饰符re.M匹配多行时,\A将所有字符串作为一整行处理。 abc123\nabc456,匹配abc123:\Aabc,^则都会匹配到 | \Z | 匹配字符串结束 | 与\A同理 | \b | 匹配字符串开始或结束(边界) | abc\nabcd,匹配a开头并且c结尾字符串:\babc\b | \B | 与\b相反 |
| \d | 匹配任意十进制数,等效[0-9] | 1\n123\nabc,匹配1和123:[0-9],包含单个数字的都会匹配到,如果只想匹配1:\b[0-9]\b | \D | 匹配任意非数字字符,等效[^0-9] | 1\n12\nabc,匹配abc:[^0-9] | \s | 匹配任意空白字符,等效[\t\n\r\f\v] | 1\n a,注意a前面有个空格,匹配a:\s | \S | 匹配任意非空白字符,等效[^\t\n\r\f\v] | 1\n a\n ,匹配1和a:\S | \w | 匹配任意数字和字母,等效[a-zA-Z0-9_] | 1\n a\n ,匹配1和a:\w | \W | 与\w相反,等效[^a-zA-Z0-9_] |
| \n | 反向引用,n是数字,从1开始编号,表示引用第n个分组匹配的内容 | ff,匹配ff:(.)\1,即"ff"
|
扩展正则表达式 | 描述 | ( ) | 匹配小括号中正则表达式或字符。用上面\n特殊字符引用。 | (?#...) | 注释小括号内的内容 | (?:...) | 不保存匹配的分组 | (?P<name>...) | 命名分组,name是标识名称,默认是数字ID标识分组匹配 | (?=...) | 匹配后面能匹配表的达式...,称为正先行断言 | (?!...) | 匹配后面不能匹配的表达式...,称为负先行断言 | (?<=...) | 匹配前面能匹配的表达式...,称为正后发断言 | (?<!...) | 匹配前面不能匹配的表达式...,称为负后发断言 | (?(id/name)Y/N) | 如果分组提供的id或name存在,则使用Y表达式匹配,否则N表达式匹配 |
方法 | 描述 | re.compile(pattern, flags=0) | 把正则表达式编译成一个对象 | re.findall(pattern, string, flags=0) | 以列表形式返回所有匹配的字符串 | re.finditer(pattern, string, flags=0) | 以迭代器形式返回所有匹配的字符串 | re.match(pattern, string, flags=0) | 匹配字符串开始,如果不匹配返回None | re.search(pattern, string, flags=0) | 扫描字符串寻找匹配,如果符合返回一个匹配对象并终止匹配,否则返回None | re.split(pattern, string, maxsplit=0, flags=0) | 以匹配模式作为分隔符,切分字符串为列表 | re.sub(pattern, repl, string, count=0, flags=0) | 字符串替换,repl替换匹配的字符串,repl可以是一个函数 | re.purge() | 清除正则表达式缓存 |
- gr= re.match(r'(\w+) (\w+)', 'hello world')
复制代码output: 'hello world'
匹配第一组:output:'hello'匹配第二组:output:'world'
- [a-zA-Z0-9| \u4e00-\u9fa5]:匹配大小写,数据,中文
复制代码
- https?://(www\.)?(\w+)(\.\w+)([a-zA-Z0-9\.\&\/\?\:@\-_=#])* #匹配网址
复制代码
|
|