广州活力数据恢复中心

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 1458|回复: 0

python3 re正则相关资料和教程regex

[复制链接]

92

主题

104

帖子

688

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
688
发表于 2020-3-30 07:55:39 | 显示全部楼层 |阅读模式
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()清除正则表达式缓存

  1. gr= re.match(r'(\w+) (\w+)', 'hello world')
复制代码
  1. print(gr.group(0))  #全部匹配
复制代码
output:
'hello world'
匹配第一组:
  1. print(gr.group(1))
复制代码
output:'hello'匹配第二组:
  1. print(gr.group(0))
复制代码
output:'world'
  1. [a-zA-Z0-9| \u4e00-\u9fa5]:匹配大小写,数据,中文
复制代码

  1. https?://(www\.)?(\w+)(\.\w+)([a-zA-Z0-9\.\&\/\?\:@\-_=#])* #匹配网址
复制代码









一体优盘数据恢复 www.rflashdata.com
硬盘ROM损坏焊爆丢失配ROM服务
buffalo 隨身碟數據救援 bitlocker WDV2 lacie EFS等加密硬盘数据恢复,指纹爱国者加密优盘数据恢复 +86 18620923827
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|硬盘FLASH数据恢复论坛

GMT+8, 2024-11-1 08:37 , Processed in 0.038052 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表