我有一堆我需要在字符串中找到的模式,它们如下所示:
<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>" />
用法示例:
^{pr2}$会导致
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"/>']
但我不知道这是否是最好的模式(我相信还有更好的方法)。这将查找具有该模式的所有模式,但不会找到标记内的属性。有没有一种编写正则表达式的方法,可以将值推送到dictionary对象中,其中的所有值都作为键,值在=符号后?在
我只是觉得有更好的方法可以做到这一点,而且由于我不是regex的天才,我想我应该问问社区。在
谢谢你
试试看这个。抓住这个捕获。请参阅演示。在
https://regex101.com/r/nL5yL3/42
将
group 1
作为键,group 2
作为值。在用正则表达式破解XML或HTML可能是徒劳的练习。Pyparsing包含一个表达式构建器助手方法makeHTMLTags,它将生成非常真实的容忍解析器,并生成dict类的返回值。在
分析您的示例可以得到:
^{pr2}$注意,产生的ParseResults结构将允许您访问已解析的属性,如对象属性(
dyn.domainlookup
)或dict键(dyn["domainlookup"]
)。在使用一个XML解析器,就像内置的^{} 。在
示例:
打印
1 of 15
。在注意,这个例子是人为的,因为我不确定真正的XML输入是什么。不过,这个想法还是一样的——一个XML解析器。在
相关问题 更多 >
编程相关推荐