2013-09-10 3 views
1

У меня есть длинный текст, и я хотел бы получить все записи в тексте, которые соответствуют следующей схеме:регулярное выражение HTTP в Python

HTTP * * **** .id.txt , где * может быть любая запись (неизвестная длина), а точки - это фактически точки в тексте. Я хотел бы иметь список со всеми элементами, которые соответствуют такому шаблону.

Одна из многих попыток был,

c = re.match(r'^(http)(.*)id.txt', b) 

Я также попытался,

c = re.findall(r'(http)(.*)fastq.gz', b) 

, но ни один из них не дают список HTTP * * * .fastq.gz записей.

Спасибо!

+0

Что вы имеете в виде, когда вы скажем, «это не работает» –

+0

Я имею в виду, что это не дает мне список, который я хочу. – Dnaiel

+0

Я сильно подозреваю, что вы можете быть более точным, если вы говорите, что * может быть «любой записью». Возможно, это может быть любое количество символов без пробелов (например, r '(http \ S *) ", или это может быть любое число любого символа, отличного от некоторых битов пунктуации (r'http [^.,; \ T \ n] * '). Будь более конкретным о том, как вы узнали, что попали в конец одной из этих строк, а затем выясните, как представить это как атомы регулярного выражения. –

ответ

1

Вы пытались использовать re.findall?

import re 

b = 'http://match.id.txt --- blablabla --- http://match2.id.txt' 
matches = re.findall(r'http.*?\.id\.txt', b) 
print matches # ['http://match.id.txt', 'http://match2.id.txt'] 

? сразу после .* уменьшить согласование до минимума (без него, он совпадает всю строку, с .* = match.id.txt --- blablabla --- http://match2). См. Некоторые руководства по регулярному выражению, чтобы узнать больше об этом. .

Demo available here

+0

Я тоже пробовал, но это не дает мне список как вы упомянули – Dnaiel

+0

Я отредактировал свое сообщение и даю рабочую демонстрацию. –

+0

приятно, спасибо! Все еще не работает для моего текста, так как он имеет намного более странный характер, пытаясь выяснить, что конкретно о моем тексте – Dnaiel

0

Вы можете усики своих символов точечных с символом «\», потому что (точка) является регулярным выражением для любого характера Примера:

c = re.match(r'^(http).*(\.*)id\.txt', b) 
Смежные вопросы