2013-11-25 6 views
0

Я пытаюсь получить значениерегулярное выражение питона между двумя словами

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() 

, но я хочу значение между «архив /» и «/index.html»
Я вытаращил и пытался что-то вроде (?<=archive/\/index.html).*(?=\/index.html:)

, но он не работал me .. как я могу получить список результатов как '

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

ответ

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

Осмотры - это то, что вам нужно. Вы должны использовать его как это:

>>> [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'] 
1

В регулярном выражении

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

может решить эту проблему, предположит, что s является строкой из списка.

1

Вы можете принять помощь от ниже коды .It решит вашу проблему.

 
>>> import re 
>>> p = '/worldcup/archive/southafrica2010/index.html' 
>>> r = re.compile('archive/(.*?)/index.html') 
>>> m = r.search(p) 
>>> m.group(1) 
'southafrica2010' 
Смежные вопросы