元字符和其含义
. 匹配除换行符以外的任意字符
\ 转义字符,使后一个字符改变原来的意思
\w 匹配字母、数字、下划线:[A-Za-z0-9_]
\W 匹配特殊字符:[^A-Za-z0-9_]
\s 匹配任意的空白符:[<空格>\t\r\n\f\v]
\S 匹配非空白符
\d 匹配数字
\D 匹配非数字
\n 匹配一个换行符
\t 匹配一个制表符
\b 匹配一个单词的结尾 * 匹配前一个字符零次或更多次
+ 匹配前一个字符一次或更多次
? 匹配前一个字符零次或一次
^ 匹配字符串的开始
$ 匹配字符串的结尾
| 匹配|左右表达式中的任意一个 () 匹配括号内的表达式,也表示一个组
[...] 匹配字符组中的字符
[^...] 匹配除了字符组中字符的所有字符
{n} 匹配前一个字符n次
{n,} 匹配前一个字符n次或更多次
{n,m} 匹配前一个字符n到m次 # 几个常用的非贪婪匹配Pattern
*? 重复任意次,但尽可能少重复
+? 重复1次或更多次,但尽可能少重复
?? 重复0次或1次,但尽可能少重复
{n,m}? 重复n到m次,但尽可能少重复
{n,}? 重复n次以上,但尽可能少重复
.*?x 就是取前面任意长度的字符,直到一个x出现 re.compile(pattern,flags=0)
pattern: 编译时用的表达式字符串。
flags 编译标志位,用于修改正则表达式的匹配方式,如:是否区分大小写,多行匹配等。
e.S(DOTALL) 使.匹配包括换行在内的所有字符
re.I(IGNORECASE) 使匹配对大小写不敏感
re.L(LOCALE) 做本地化识别(locale-aware)匹配,法语等
re.M(MULTILINE) 多行匹配,影响^和$
re.X(VERBOSE) 该标志通过给予更灵活的格式以便将正则表达式写得更易于理解
re.U 根据Unicode字符集解析字符,这个标志影响\w,\W,\b,\B re.match(pattern, string, flags).group()
尝试从字符串的开始匹配一个模式如果字符串开始不符合正则表达式,则匹配失败,函数返回None;
# 第一个参数是正则表达式,如果匹配成功,则返回一个Match,否则返回一个None;
# 第二个参数表示要匹配的字符串;
# 第三个参数是标致位,用于控制正则表达式的匹配方式,如:是否区分大小写,多行匹配等等。 a=re.search(pattern, string, flags).group()
匹配整个字符串,只到找到第一个匹配然后返回,如果字符串没有匹配,则返回None。 re.sub(pattern, repl, string, count=0, flags=0)
用于替换字符串中的匹配项。
# 第四个参数指替换个数。默认为0,表示每个匹配项都替换。 re.split(pattern, string, maxsplit=0, flags=0)
将字符串按空格分割成一个单词列表。
# re.split(',','123,456') # ['123', '456']
split的优先级查询
# 没有()的没有保留所匹配的项,但是有()的却能够保留了匹配的项
# r = re.split('(,)','123,456') # ['123', ',', '456'] re.findall(pattern, string, flags=0)
匹配字符串所有的内容,把匹配到的字符串以列表的形式返回
findall的优先级查询:
?: 在有分组的情况下findall()函数,只拿分组里的字符串,拿所有匹配到的字符串,
如果想要匹配结果,取消权限即可:(?:[0-9]) re.finditer(pattern, string, flags=0)
返回一个存放匹配结果的迭代器 命名分组匹配:
分组的意义,就是在匹配成功的字符串中,再提取()里面的字符串
ret = re.search("<(?P<tag_name>\w+)>\w+</(?P=tag_name)>","<h1>hello</h1>")
# 还可以在分组中利用?<name>的形式给分组起名字
# 如果不给组起名字,也可以用\序号来找到对应的组,表示要找的内容和前面的组内容一致
# 获取的匹配结果可以直接用group('名字')或group(序号)拿到对应的值

最新文章

  1. JS-自制提速小工具:开发页面时需要按比例计算宽高值的快速计算器
  2. Solr嵌套子文档的弊端以及一种替代方式
  3. Boost学习笔记(五) progress_display
  4. ROS学习笔记(七)——节点
  5. iOS阶段学习第一天笔记(Mac终端的操作)
  6. ACM/ICPC 之 四道MST-Prim解法(POJ1258-POJ1751-POJ2349-POJ3026)
  7. IOS- 数据存储
  8. 高性能MySQL——第一章MySQL的架构与历史
  9. VS2010下编译安装DarwinStreamingServer5.5.5
  10. TCP协议: SYN ACK FIN RST PSH URG 详解
  11. API HOOK库
  12. C语言基础题
  13. Java 测试驱动开发--“井字游戏” 游戏实战
  14. 博客里的第一篇随笔!QWQ
  15. 洛谷P4007 小 Y 和恐怖的奴隶主(期望dp 矩阵乘法)
  16. 使用WPF Animated GIF实现GIF图片的播放
  17. 20170728 Celery项目 后台处理SQL SERVER的一个异常
  18. 8天学通MongoDB——第一天 基础入门(转)
  19. 解决flume运行中的一个异常问题!
  20. 字符串匹配-KMP

热门文章

  1. 改变UITabbar顶部分割线颜色
  2. 51Nod 1095 Anigram单词
  3. 自定义view(13)自定义属性
  4. html2canvas如何将div转成图片并下载,如何将滚动条的内容截取下来
  5. 498 Diagonal Traverse 对角线遍历
  6. 01_C++学习笔记_入门
  7. java实现斐波那契的两种方法
  8. Oracle ORA
  9. Java JDK装配置
  10. H3C S5024P交换机 H3C AR28-31路由器命令