python re零宽断言踩坑

在在线的正则校验工具上写了大半天才写出来的表达式,往python里一粘贴复制,代码行飘红,强行运行之后,报错.
表达式:

#用单引号替换txt_line中匹配到的双引号
param = re.sub(r'(?<=param":(\s)*"\{(.*))"(?=.*(\})", "(in|co))','\'',txt_line)
re.error: look-behind requires fixed-width pattern

错误原因就是在

(?<=param":(\s)*"\{(.*))

这里用例*号来表示变长字符了.而re模块不支持断言变长.如果改成

param = re.sub(r'(?<=param":(\s)"\{)"(?=(\})", "(in|co))','\'',txt_line)

就不会报错了.但是也就无法匹配到我想要的字符了.

零宽断言分类

零宽断言可分为正向、反向两类,每类又分为预测先行和回顾后发两种:

正预测先行断言

语法是(?=exp),它断言此位置的后面能匹配表达式exp.

正回顾后发断言

语法是(?<=exp),它断言此位置的前面能匹配表达式exp.

负预测先行断言

语法是(?!exp),它断言此位置的后面不能匹配表达式exp.

负回顾后发断言

语法是(?<!exp),它断言此位置的前面不能匹配表达式exp.

零宽断言详情描述可见:

https://www.jianshu.com/p/c22bbdda2728

python re零宽断言踩坑 re.error: look-behind requires fixed-width pattern相关推荐

  1. $python正则表达式系列(5)——零宽断言

    本文主要总结了python正则零宽断言(zero-length-assertion)的一些常用用法. 1. 什么是零宽断言 有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面 ...

  2. Python正则表达式之零宽断言(4)

    文章目录 声明 | ^ $ \A \Z \b \B 分组 反向引用 注意 声明 有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言.例如 \b 表示当前位置位于一个单 ...

  3. php 正则表达式 环视,正则表达式教程五 —— 环视(零宽断言)

    环视(lookahead),有些也叫零宽断言,不过总感觉这名字太深奥,我喜欢叫环视. 正如它的别名一样,它的匹配是"零宽度"的,是不会占用字符的,只匹配文本中的特定位置,所以环视表 ...

  4. grep零宽断言正则表达式

    一.grep零宽断言: (匹配宽度为零,满足一定的条件/断言) 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用, ...

  5. 正则 ?= 和 ?= 用法 以及零宽断言等概念

    正则 ?<=  和 ?= 用法 参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwWQh ...

  6. Regex 正则零宽断言

    http://baike.baidu.com/link?url=sLfovpZmIcS5Uz_tiidXoVtjl30Tu3wARMfhnEcbgEGzsb8g1z7dvtGNXTulu1KDodmi ...

  7. 零宽断言java_正则表达之零宽断言(零宽度正预测先行断言)

    最近为了对html文件进行源码处理,需要进行正则查找并替换.于是借着这个机会把正则系统地学一下,虽然以前也用过正则,但每次都是临时学一下混过关的.在学习的过程中还是遇到不少问题的,特别是零宽断言(这里 ...

  8. 使用Java读取 “Python写入redis” 的数据踩坑记录

    https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...

  9. 正则表达式零宽断言详解

    在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存 ...

最新文章

  1. hive 字符串前有 ’ 符号
  2. 原创:Docker在云家政的应用 谢绝复制粘贴内容
  3. java期末考试试卷及答案文库_备战期末考!初中全科下册期末试卷(含答案)合集,建议收藏!...
  4. SpringBoot_日志-SpringBoot默认配
  5. [bmgr]android应用数据备份以及还原
  6. c语言巩固,巩固一下C语言中的指针
  7. span 里面的文字不显示_“无糖饮料”显示不含糖,为何还这么甜?原来里面加了这个...
  8. Linux 实操———— Shell 远程执行命令
  9. Vim移动光标快捷键汇总
  10. 3m格式的文件怎么转换成mp3_怎么将电脑上的mp4文件转换成mp3格式
  11. Eclipse无法查看Servlet源代码的解决方案
  12. 【Unity3D】Photon环境搭建
  13. 思科、华为等四大厂商网络工程师面试题汇总+解析(第1期)
  14. 采样示波器和实时示波器的原理及优势
  15. 单片机驱动DM9000
  16. (转)男人的梦想之野性篇 什么是真正的越野车
  17. 创建OpenGL Context(WGL)
  18. Linux修改文件句柄数及vm.max_map_count、stack size
  19. Unity使用脚本动态修改材质球的颜色
  20. 环境光传感器--OPT3001,硬件开发与程序设计

热门文章

  1. flink之keyby groupby区别
  2. 凡客前副总张小军开服装B2C网站已获亿元风投
  3. 文件夹加密超级大师V16.85官方版
  4. 科创板|柏楚电子股价首次跌破200元
  5. Django QuerySet优化
  6. 提高记忆力的唯一方法是进行记忆力训练(转载)
  7. J-Link Device Support Kit
  8. 2022第二届网刃杯网络安全大赛
  9. asp毕业设计——基于ASP+IIS+sqlserver的房屋租售信息管理系统设计与实现(毕业论文+程序源码)——房屋租售信息管理系统
  10. Spark问题:System memory 259522560 must be at least 4.718592E8. Please use a larger heap size.