如何在python中使用\K进行正则表达式?

w6mmgewl  于 2023-05-27  发布在  Python
关注(0)|答案(3)|浏览(156)

\K表示重置匹配的开始,这在不支持复杂的lookbehind时非常有用(即,它不允许+和 * 用于lookbehind)。它很好地满足了我的需求,然而,当我试图在python中使用它时,它报告了bad escape \K。以下是我的Python代码:

re.sub(r'\[\n[ ]+\d+, ?\n[ ]+\K\d+(?=, ?\n[ ]+(?:true|false)\n[ ]+\])', '__table1.column__', content)
gzjq41n4

gzjq41n41#

您可以使用2个捕获组来代替:

(\[\n[ ]+\d+, ?\n[ ]+)\d+(, ?\n[ ]+(?:true|false)\n[ ]+\])

Python demo| Regex demo
在更换使用中:

\1__table1.column__\2

举个例子

re.sub(
    r'(\[\n[ ]+\d+, ?\n[ ]+)\d+(, ?\n[ ]+(?:true|false)\n[ ]+\])',
    r'\1__table1.column__\2',
    content
)
osh3o9ms

osh3o9ms2#

您可以使用支持它的regex模块。

wko9yo5t

wko9yo5t3#

您可以使用(?<=...)背后的积极外观
例如,你想读取http div之后的所有内容:

<label>Lorem Ipsum</label>

这个正则表达式(?<=<label>).*将返回:

Lorem Ipsum</label>

同时,如果你想删除最后一个div部分</label>,你可以使用积极的前瞻:(?=...),像这样:
(?<=<label>).*(?=</label>)
这将返回标签div内容:

Lorem Ipsum

相关问题