1

我有一个长文本,我想获取文本中与以下模式匹配的所有条目:

http** * **** .id.txt,其中 * 可以是任何条目(未知长度),点实际上是文本中的点。我想要一个列表,其中包含与这种模式匹配的所有条目。

众多尝试之一是,

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

我也试过,

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

但他们都没有给出 http* * *.fastq.gz 条目的列表。

谢谢!

4

2 回答 2

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)。请参阅一些关于正则表达式的教程以了解更多信息。

此处提供演示

于 2013-09-10T19:17:12.410 回答
0

您可以使用字符“\”来转义点字符,因为 .(dot) 是任何字符的正则表达式示例:

c = re.match(r'^(http).*(\.*)id\.txt', b) 
于 2013-09-10T19:20:23.243 回答