gpt4 book ai didi

Python正则表达式匹配源代码中以新行结尾的文本

转载 作者:行者123 更新时间:2023-12-01 09:24:35 25 4
gpt4 key购买 nike

我有 Smarty 模板代码。使用 Python re,我想匹配整个 if 条件(如果它拆分在新行上)。目标是删除所有 if 条件。

{if true eq isset( $username ) and false eq $is_logged and false}
{if true eq isset( $username )
and false eq $is_logged and false}

{if true eq isset( $username ) and $boolLoggedIn}
Hello {$username}
{/if}

{if true eq isset( $username )}
{assign var=username value=$fname}
{/if}

我尝试使用下面的正则表达式,但仅当整个 if 条件位于一行上时才匹配。

    {(if|/if)(.)*(?<=})

fiddle : https://regex101.com/r/dVTgla/2

最佳答案

与其使用 . 来匹配所有内容(并且它不匹配换行符,至少默认情况下如此),更好的方法可能是匹配除闭括号之外的所有内容:[ ^}]。您还可以稍微简化正则表达式。

import re

TEXT = '''
{if true eq isset( $username ) and false eq $is_logged and false}
{if true eq isset( $username )
and false eq $is_logged and false}

{if true eq isset( $username ) and $boolLoggedIn}
Hello {$username}
{/if}

{if true eq isset( $username )}
{assign var=username value=$fname}
{/if}
'''

rgx = re.compile(r'{/?if[^}]*}')

for m in rgx.findall(TEXT):
print()
print(m)

关于Python正则表达式匹配源代码中以新行结尾的文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50538335/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com