每次重复后拆分正则表达式

2024-05-15 18:04:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近在用模板引擎进行arround实验,而且在正则表达式方面还停留在非常早期的阶段。你知道吗

我的模板引擎的第一步应该是提取所有模板构造。所以我写了以下正则表达式:

# Split all relevant parts apart to merger them later on.
exp_tags = re.compile(r'({[%|{](.*)[}|%]})')
print exp_tags.split(body)

在两个模板构造位于同一行之前,它可以正常工作。然后表达式将它们合并在一起,而不是逐个拆分。你知道吗

示例:

<section>
{{title}}{{text}}
</section>

应导致:

{'<section>', '{{title}}', 'title', '{{text}}', 'text', '</section>'}

但结果是:

{'<section>', '{{title}}{{text}}', 'title}}{{text', '</section>'}

有人知道如何用正则表达式实现我的目标吗?你知道吗


Tags: totext引擎模板titletagssectionall
1条回答
网友
1楼 · 发布于 2024-05-15 18:04:27

Regular expression quantifiers默认情况下是贪婪的。或者使用*的非贪婪变量,在其后面附加?

r'({[%|{](.*?)[}|%]})'

或者使用否定字符类来排除结束分隔符。你知道吗

顺便说一句,character class[a|b]并不意味着ab,而是a|b集合中的一个,因为|不被解释为交替,而是作为文字字符。你知道吗

相关问题 更多 >