" /> 用法示例: Page of 这会导致 Page 1 of 15 我计划使用以下正则表-6ren">
gpt4 book ai didi

python - 如何优化这个正则表达式模式

转载 作者:行者123 更新时间:2023-12-01 04:55:51 24 4
gpt4 key购买 nike

我需要在字符串中找到一堆模式,它们如下:

<dyn type="dataFrame" name="Main Map" property="reference scale"/>
<dyn type="dataFrame" name="Main Map" property="time"/>
<dyn type="page" property="name"/>
<dyn type="page" property="number"/>
<dyn type="page" property="index"/>
<dyn type="page" property="count"/>
<dyn type="page" property="attribute" field="<Field Name>" domainlookup="true"/>
<dyn type="page" property="attribute" field="<Field Name>" />

用法示例:

Page <dyn type="page" property="index"/> of <dyn type="page" property="count"/>

这会导致

Page 1 of 15

我计划使用以下正则表达式:

<dyn[^>]*/>

这将给出:

regex = re.compile("<dyn[^>]*/>")
string = """Page <dyn type="page" property="index"/> of <dyn type="page" property="count"/>"""
r = regex.search(string)
print regex.findall(string)
[u'<dyn type="page" property="index"/>', u'<dyn type="page" property="count"/>']

但我不知道这是否是最好的使用模式(我相信有更好的方法)。这将找到具有该模式的所有模式,但不会找到标签内的属性。有没有一种方法可以编写正则表达式,以便我可以将值推送到字典对象,其中 <> 内的所有值作为键,= 符号后面的值?

我只是认为有更好的方法来做到这一点,而且由于我不是正则表达式方面的高手,我想我应该询问社区。

谢谢

最佳答案

使用XML解析器,例如内置xml.etree.ElementTree .

示例:

import xml.etree.ElementTree as ET

data = """
<root>
<dyn type="dataFrame" name="Main Map" property="reference scale"/>
<dyn type="dataFrame" name="Main Map" property="time"/>
<dyn type="page" property="name"/>
<dyn type="page" property="number"/>
<dyn type="page" property="index">1</dyn>
<dyn type="page" property="count">15</dyn>
<dyn type="page" property="attribute" field="Field Name" domainlookup="true"/>
<dyn type="page" property="attribute" field="Field Name" />
</root>
"""

root = ET.fromstring(data)
index = root.findtext('.//dyn[@property="index"]')
count = root.findtext('.//dyn[@property="count"]')

print "%s of %s" % (index, count)

打印 1 of 15

请注意,该示例是人为的,因为我不确定您真正的 XML 输入是什么。不过,这个想法保持不变——XML 解析器。

关于python - 如何优化这个正则表达式模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27403604/

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