gpt4 book ai didi

python - 正则表达式命名组和条件逻辑

转载 作者:行者123 更新时间:2023-11-30 23:15:16 25 4
gpt4 key购买 nike

考虑以下字符串(编辑:这不是一个带有正则表达式问题的 HTML 解析。而只是一个命名组的练习):

s = """<T1>
<A1>
lorem ipsum
</A1>
</T1>"""

是否可以使用 re.sub 和命名组将字符串转换为此结果?

<T1>
<test number="1">
lorem ipsum
</test>
</T1>

现在我有以下代码:

import re
regex = re.compile("(<(?P<end>\/*)A(?P<number>\d+)>)")
print regex.sub('<\g<end>test number="\g<number>">', s)

给出以下结果

<T1>
<test number="1">
lorem ipsum
</test number="1">
</T1>

可以像这样使用|运算符question

最佳答案

尝试匹配整个标签。不仅可以捕获开始和结束标签,还可以捕获其内容。

正则表达式:

(<(?P<end>\/*)(A)(?P<number>\d+)>)(.*?)</\3\4>

替换字符串:

<test number="\g<number>">\5</test>

DEMO

>>> s = """<T1>
<A1>
lorem ipsum
</A1>
</T1>"""
>>> import re
>>> print(re.sub(r'(?s)(<(?P<end>\/*)(A)(?P<number>\d+)>)(.*?)</\3\4>', r'<test number="\g<number>">\5</test>', s))
<T1>
<test number="1">
lorem ipsum
</test>
</T1>

(?s) 称为 DOTALL 修饰符,它匹配正则表达式中的点,甚至可以匹配换行符。

关于python - 正则表达式命名组和条件逻辑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28317683/

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