【发布时间】:2019-12-29 12:55:07
【问题描述】:
\K 表示重置匹配的开始,这在不支持复杂的后视时非常有用(即,它不允许 + 和 * 用于后视)。它很好地满足了我的需求,但是,当我尝试在 python 中使用它时,它报告bad escape \K。以下是我的python代码:
re.sub(r'\[\n[ ]+\d+, ?\n[ ]+\K\d+(?=, ?\n[ ]+(?:true|false)\n[ ]+\])', '__table1.column__', content)
【问题讨论】:
-
您可以使用捕获组
(\[\n[ ]+\d+, ?\n[ ]+)\d+(, ?\n[ ]+(?:true|false)\n[ ]+\])并在替换regex101.com/r/s0yvJr/1 中使用\1__table1.column__\2 -
@TheFourthBird 你应该省略
\2,\K的意思只是“从这里开始匹配”。 -
@tripleee 我认为 OP 想用
__table1.column__替换两种模式之间的数字。使用\K时,它看起来像regex101.com/r/vX8bIX/1 如果我省略\2,它将与原始模式中的前瞻逻辑不匹配。 -
啊,我的错,我错过了你如何从前瞻比赛切换到常规比赛。
-
您可能应该将此作为答案发布;你的比目前提出的两个答案都好。
标签: python regex python-3.x