首页 > 解决方案 > 正则表达式不匹配特定字符串,但需要额外检查

问题描述

所以例如我有这个字符串

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 语法不起作用

标签: regexpython-3.x

解决方案


您想使用 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'
>>>

推荐阅读