【发布时间】:2021-04-09 04:12:32
【问题描述】:
为什么这个python代码打印|ab||而不是|ab|d\nefgh|?我试图在c 之后捕获字符串的其余部分(包括多行),但我不知道我错过了什么。
import re
s = re.sub(
"^(.*){1}c(.*){2}$",
"|\\1|\\2|",
"""abcd
efgh""",
flags=re.DOTALL,
count=1
)
print(s)
【问题讨论】:
-
为什么要使用方括号
{1}和{2}(通常用于明确指出 它们之前的字符/组的重复次数,而不是编号捕获组)?在这种情况下,它们似乎是不必要的。 -
进一步扩展,我认为您误解了该结构。我打赌你认为这两个副短语是#1 和#2,但这是不对的。
{1}表示“执行前一个令牌 1 次”,{2}表示“执行前一个令牌 2 次”。 -
@TimRoberts 是的,我就是这么想的。现在我的代码没有按预期工作是有道理的。
标签: python python-3.x regex