1
を文字列を分割するために、私は私のアプローチが分裂したこと正規表現が同じブロックに
[['ip-address','1.1.1.1/16','protocol','ospf','ll',4],['ip-address','3.3.3.3/32','ip-addr','2.2.2.2','ip-addr','8.8.8.8','type',route]]
a=''' <att>
<rt>
<rts>
<ip-address>1.1.1.1/16</ip-address>
<bb>
<cc>
<protocol>ospf</protocol>
</cc>
</bb>
<ee>
<ff>
<ll>4</ll>
</ff>
</ee>
</rts>
<rts>
<ip-address>3.3.3.3/32</ip-address>
<bb>
<cc>
<ip-addr>2.2.2.2</ip-addr>
<ip-addr>8.8.8.8</ip-addr>
</cc>
</bb>
<ee>
<ff>
<type>route</type>
</ff>
</ee>
</rts>
<rt>
</att>'''
以下のようにデータにPythonで正規表現を使用して、以下のXMLからリストに挿入、それを取得したいです複数の文字列と、検索に上記の単一の文字列、たとえば
b= '''<rts>
<ip-address>1.1.1.1/16</ip-address>
<bb>
<cc>
<protocol>ospf</protocol>
</cc>
</bb>
<ee>
<ff>
<ll>4</ll>
</ff>
</ee>
</rts>'''
c= '''<rts>
<ip-address>3.3.3.3/32</ip-address>
<bb>
<cc>
<ip-addr>2.2.2.2</ip-addr>
<ip-addr>8.8.8.8</ip-addr>
</cc>
</bb>
<ee>
<ff>
<type>route</type>
</ff>
</ee>
</rts>'''
私は、複数の文字列を作成するには、次の正規表現を使用
regex = re.findall(r"<(rts)>.*<\ /rts)", a, re.S)
しかし、それはすべてが以下のように文字列の末尾をそれまではフェッチ、
<rts>
<ip-address>1.1.1.1/16</ip-address>
<bb>
<cc>
<protocol>ospf</protocol>
</cc>
</bb>
<ee>
<ff>
<ll>4</ll>
</ff>
</ee>
</rts>
<rts>
<ip-address>3.3.3.3/32</ip-address>
<bb>
<cc>
<ip-addr>2.2.2.2</ip-addr>
<ip-addr>8.8.8.8</ip-addr>
</cc>
</bb>
<ee>
<ff>
<type>route</type>
</ff>
</ee>
</rts>
は、私が上に示した「B」と「C」などの文字列を分割することができる可能性が方法はありますか?
正規表現でXMLを解析することは、一般的には悪い考えです。適切な特別なライブラリの使用を検討してください – agg3l
あなたのregexについては、貪欲でないマッチ '。*? 'に調整する必要があります – agg3l
Pythonには、XML、[' xml.etree.ElementTree'](https: /docs.python.org/2/library/xml.etree.elementtree.html) – augurar