python re零宽断言踩坑 re.error: look-behind requires fixed-width pattern
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相关推荐
- $python正则表达式系列(5)——零宽断言
本文主要总结了python正则零宽断言(zero-length-assertion)的一些常用用法. 1. 什么是零宽断言 有时候在使用正则表达式做匹配的时候,我们希望匹配一个字符串,这个字符串的前面 ...
- Python正则表达式之零宽断言(4)
文章目录 声明 | ^ $ \A \Z \b \B 分组 反向引用 注意 声明 有些元字符它们不匹配任何字符,只是简单地表示成功或失败,因此这些字符也称之为零宽断言.例如 \b 表示当前位置位于一个单 ...
- php 正则表达式 环视,正则表达式教程五 —— 环视(零宽断言)
环视(lookahead),有些也叫零宽断言,不过总感觉这名字太深奥,我喜欢叫环视. 正如它的别名一样,它的匹配是"零宽度"的,是不会占用字符的,只匹配文本中的特定位置,所以环视表 ...
- grep零宽断言正则表达式
一.grep零宽断言: (匹配宽度为零,满足一定的条件/断言) 零宽断言用于查找在某些内容(但并不包括这些内容)之前或之后的东西,也就是说它们像 \b ^ $ \< \> 这样的锚定作用, ...
- 正则 ?= 和 ?= 用法 以及零宽断言等概念
正则 ?<= 和 ?= 用法 参考网址:http://baike.baidu.com/link?url=2zORJF9GOjU8AkmuHDLz9cyl9yiL68PdW3frayzLwWQh ...
- Regex 正则零宽断言
http://baike.baidu.com/link?url=sLfovpZmIcS5Uz_tiidXoVtjl30Tu3wARMfhnEcbgEGzsb8g1z7dvtGNXTulu1KDodmi ...
- 零宽断言java_正则表达之零宽断言(零宽度正预测先行断言)
最近为了对html文件进行源码处理,需要进行正则查找并替换.于是借着这个机会把正则系统地学一下,虽然以前也用过正则,但每次都是临时学一下混过关的.在学习的过程中还是遇到不少问题的,特别是零宽断言(这里 ...
- 使用Java读取 “Python写入redis” 的数据踩坑记录
https://my.oschina.net/u/2338224/blog/3061507 使用Java读取 "Python写入redis" 的数据踩坑记录 https://seg ...
- 正则表达式零宽断言详解
在使用正则表达式时,有时我们需要捕获的内容前后必须是特定内容,但又不捕获这些特定内容的时候,零宽断言就起到作用了. 一.基本概念: 零宽断言正如它的名字一样,是一种零宽度的匹配,它匹配到的内容不会保存 ...
最新文章
- hive 字符串前有 ’ 符号
- 原创:Docker在云家政的应用 谢绝复制粘贴内容
- java期末考试试卷及答案文库_备战期末考!初中全科下册期末试卷(含答案)合集,建议收藏!...
- SpringBoot_日志-SpringBoot默认配
- [bmgr]android应用数据备份以及还原
- c语言巩固,巩固一下C语言中的指针
- span 里面的文字不显示_“无糖饮料”显示不含糖,为何还这么甜?原来里面加了这个...
- Linux 实操———— Shell 远程执行命令
- Vim移动光标快捷键汇总
- 3m格式的文件怎么转换成mp3_怎么将电脑上的mp4文件转换成mp3格式
- Eclipse无法查看Servlet源代码的解决方案
- 【Unity3D】Photon环境搭建
- 思科、华为等四大厂商网络工程师面试题汇总+解析(第1期)
- 采样示波器和实时示波器的原理及优势
- 单片机驱动DM9000
- (转)男人的梦想之野性篇 什么是真正的越野车
- 创建OpenGL Context(WGL)
- Linux修改文件句柄数及vm.max_map_count、stack size
- Unity使用脚本动态修改材质球的颜色
- 环境光传感器--OPT3001,硬件开发与程序设计
热门文章
- flink之keyby groupby区别
- 凡客前副总张小军开服装B2C网站已获亿元风投
- 文件夹加密超级大师V16.85官方版
- 科创板|柏楚电子股价首次跌破200元
- Django QuerySet优化
- 提高记忆力的唯一方法是进行记忆力训练(转载)
- J-Link Device Support Kit
- 2022第二届网刃杯网络安全大赛
- asp毕业设计——基于ASP+IIS+sqlserver的房屋租售信息管理系统设计与实现(毕业论文+程序源码)——房屋租售信息管理系统
- Spark问题:System memory 259522560 must be at least 4.718592E8. Please use a larger heap size.