Python正则替换数字后的Foo报错:re.error: bad escape \K at position7
解决Python正则中\K报错的问题
Python标准库的re模块不支持\K断言(这是Perl/PCRE风格的语法),所以你写的[0-9]\KFoo会触发re.error。下面是两种可行的替代方案:
方案1:使用正向回顾后发断言
用(?<=[0-9])匹配数字后的位置,直接替换目标内容:
import re target_text = "123123Foo 12312FooTest" processed_text = re.sub(r'(?<=[0-9])Foo', r'\nFoo', target_text) print(processed_text)
输出结果:
123123 Foo 12312 FooTest
方案2:使用捕获组
捕获前面的数字,替换时保留捕获内容并插入换行符:
import re target_text = "123123Foo 12312FooTest" processed_text = re.sub(r'([0-9])Foo', r'\1\nFoo', target_text) print(processed_text)
输出结果与方案1完全一致。
扩展:匹配连续数字后的Foo
如果需要匹配一个或多个连续数字后面的Foo,只需把正则中的[0-9]改为[0-9]+即可,两种方案都适用:
- 方案1正则:
(?<=[0-9]+)Foo - 方案2正则:
([0-9]+)Foo
内容的提问来源于stack exchange,提问作者mo5br
相关产品推荐
相关产品推荐

