regex - 正则表达式不匹配特定字符串,但需要额外检查
问题描述
所以例如我有这个字符串
var = 'column1;column2;column3\r\nval1;val2;val3\r\n;val4;val5;val6\r\n'
我希望能够找到所有\r\n
并将其替换为temp\r\n
,但我想忽略column3\r\n
试图做,^(?!.*column3).*$\r\n
但 \r\n 语法不起作用
解决方案
您想使用 a negative lookbehind
,即在\r\n
前面没有时进行替换column3
:
re.sub(r'(?<!column3)\r\n', r'temp\r\n', var)
例如:
>>> import re
>>>
>>> var = 'column1;column2;column3\r\nval1;val2;val3\r\n;val4;val5;val6\r\n'
>>> new_text = re.sub(r'(?<!column3)\r\n', r'temp\r\n', var)
>>> new_text
'column1;column2;column3\r\nval1;val2;val3temp\r\n;val4;val5;val6temp\r\n'
>>>
推荐阅读
- mesh - 使用 stl 文件使用 GMSH 创建体积网格
- excel - 使用 Excel vba 创建活动工作表的备份副本
- mysql - 在 mysql 8 中使用 json 字段的表占用的空间比实际数据多得多
- python - 为什么当我更改函数名称时此代码不起作用?
- python - 错误为 TypeError:无法腌制“_thread.RLock”对象
- javascript - 在Javascript中将整数映射到其他变量的正确方法是什么
- spring-boot - 不支持请求方法“GET”,不允许方法,状态=405
- python - 如何获得 binance-python 测试网更新余额?
- reactjs - 如何在复选框更改时更新同级复选框?
- php - 使用 gmail smpt/sendgrid 从 laravel 发送电子邮件