python中两个单词之间的正则表达式

时间:2013-11-25 12:39:50

标签: python regex

我想要获得价值

l1 = [u'/worldcup/archive/southafrica2010/index.html', u'/worldcup/archive/germany2006/index.html', u'/worldcup/archive/edition=4395/index.html', u'/worldcup/archive/edition=1013/index.html', u'/worldcup/archive/edition=84/index.html', u'/worldcup/archive/edition=76/index.html', u'/worldcup/archive/edition=68/index.html', u'/worldcup/archive/edition=59/index.html', u'/worldcup/archive/edition=50/index.html', u'/worldcup/archive/edition=39/index.html', u'/worldcup/archive/edition=32/index.html', u'/worldcup/archive/edition=26/index.html', u'/worldcup/archive/edition=21/index.html', u'/worldcup/archive/edition=15/index.html', u'/worldcup/archive/edition=9/index.html', u'/worldcup/archive/edition=7/index.html', u'/worldcup/archive/edition=5/index.html', u'/worldcup/archive/edition=3/index.html', u'/worldcup/archive/edition=1/index.html']

我正在尝试使用下面的内容开始正则表达式

m = re.search(r"\d+", l)
print m.group()

但我想要“archive /”和“/index.html”之间的价值 我g目结舌并试过像(?<=archive/\/index.html).*(?=\/index.html:)

这样的东西

但它对我不起作用..如何将结果列表设为'

result = ['germany2006','edition=4395','edition=1013' , ...]

4 个答案:

答案 0 :(得分:2)

如果您确定该模式将始终匹配,则可以使用此

import re
print [re.search("archive/(.*?)/index.html", l).group(1) for l in l1]

或者您可以像这样分开

print [l.rsplit("/", 2)[-2] for l in l1]

答案 1 :(得分:1)

环顾四周就是你所需要的。你需要像这样使用它:

>>> [re.search(r"(?<=archive/).*?(?=/index.html)", s).group() for s in l1]
[u'southafrica2010', u'germany2006', u'edition=4395', u'edition=1013', u'edition=84', u'edition=76', u'edition=68', u'edition=59', u'edition=50', u'edition=39', u'edition=32', u'edition=26', u'edition=21', u'edition=15', u'edition=9', u'edition=7', u'edition=5', u'edition=3', u'edition=1']

答案 2 :(得分:1)

正则表达式

m = re.search(r'(?<=archive\/).+(?=\/index.html)', s)

可以解决这个问题,假设s是列表中的字符串。

答案 3 :(得分:1)

您可以从以下代码中获取帮助。它将解决您的问题。

>>> import re
>>> p = '/worldcup/archive/southafrica2010/index.html'
>>> r = re.compile('archive/(.*?)/index.html')
>>> m = r.search(p)
>>> m.group(1)
'southafrica2010'
相关问题