Python正则表达式解析

Python正则表达式解析,python,regex,Python,Regex,我在python中有一个字符串数组,数组中的每个字符串看起来如下所示: <r n="Foo Bar" t="5" s="10" l="25"/> 我已经搜索了一段时间,我能找到的最好的东西就是尝试修改HTML超链接正则表达式,使其符合我的需要 但我对regex的东西不太了解,我还没有做过任何工作。这就是我目前所拥有的 string = '<r n="Foo Bar" t="5" s="10" l="25"/>' print re.split("<r\s+n=

我在python中有一个字符串数组,数组中的每个字符串看起来如下所示:

<r n="Foo Bar" t="5" s="10" l="25"/> 

我已经搜索了一段时间,我能找到的最好的东西就是尝试修改HTML超链接正则表达式,使其符合我的需要

但我对regex的东西不太了解,我还没有做过任何工作。这就是我目前所拥有的

string = '<r n="Foo Bar" t="5" s="10" l="25"/>'
print re.split("<r\s+n=(?:\"(^\"]+)\").*?/>", string)
string=''

打印重新拆分(“这将为您提供大部分方法:

>>> print re.findall(r'(\w+)="(.*?)"', string)
[('n', 'Foo Bar'), ('t', '5'), ('s', '10'), ('l', '25')]
两者相辅相成

每次你的思维过程以“我想要每个看起来像X的项目”开始时,你应该使用
re.findall
。当它以“我想要每个X之间和周围的数据”开始时,使用
re.split

<r n="Foo Bar" t="5" s="10" l="25"/>
>>> from BeautifulSoup import BeautifulStoneSoup
>>> soup = BeautifulStoneSoup("""<r n="Foo Bar" t="5" s="10" l="25"/>""")

# grab the "r" element (You could also use soup.findAll("r") if there are multiple
>>> soup.find("r")
<r n="Foo Bar" t="5" s="10" l="25"></r>

# get a specific attribute
>>> soup.find("r")['n']
u'Foo Bar'
>>> soup.find("r")['t']
u'5'

# Get all attributes, or turn them into a regular dictionary
>>> soup.find("r").attrs
[(u'n', u'Foo Bar'), (u't', u'5'), (u's', u'10'), (u'l', u'25')]
>>> dict(soup.find("r").attrs)
{u's': u'10', u'l': u'25', u't': u'5', u'n': u'Foo Bar'}