\K
代表重置匹配的开始,当复杂的后顾条件不被支持时(即,不允许在后顾条件里使用 + 和 * ),它非常有用。它很好地满足了我的需求,但是当我尝试在Python中使用它时,它会报告 bad escape \K
错误。以下是我的Python代码:
re.sub(r'\[\n[ ]+\d+, ?\n[ ]+\K\d+(?=, ?\n[ ]+(?:true|false)\n[ ]+\])', '__table1.column__', content)
\K
代表重置匹配的开始,当复杂的后顾条件不被支持时(即,不允许在后顾条件里使用 + 和 * ),它非常有用。它很好地满足了我的需求,但是当我尝试在Python中使用它时,它会报告 bad escape \K
错误。以下是我的Python代码:
re.sub(r'\[\n[ ]+\d+, ?\n[ ]+\K\d+(?=, ?\n[ ]+(?:true|false)\n[ ]+\])', '__table1.column__', content)
您可以使用正向后瞻 (?<=...)
例如,您想读取 http div 后面的所有内容:
<label>Lorem Ipsum</label>
(?<=<label>).*
将返回:Lorem Ipsum</label>
同时,如果你想要移除最后一个 div 部分的 </label>
,你可以使用正向先行断言:(?=...)
,像这样:
(?<=<label>).*(?=</label>)
Lorem Ipsum
(\[\n[ ]+\d+, ?\n[ ]+)\d+(, ?\n[ ]+(?:true|false)\n[ ]+\])
,并在替换中使用\1__table1.column__\2
。https://regex101.com/r/s0yvJr/1 - The fourth bird\2
,\K
的意思是“从这里开始匹配”。 - tripleee__table1.column__
替换 2 个模式之间的数字。当使用\K
时,它看起来像 https://regex101.com/r/vX8bIX/1 如果我省略\2
,则不会匹配原始模式中的前瞻逻辑。 - The fourth bird