我有一个长文本,我想获取文本中与以下模式匹配的所有条目:
http** * **** .id.txt,其中 * 可以是任何条目(未知长度),点实际上是文本中的点。我想要一个列表,其中包含与这种模式匹配的所有条目。
众多尝试之一是,
c = re.match(r'^(http)(.*)id.txt', b)
我也试过,
c = re.findall(r'(http)(.*)fastq.gz', b)
但他们都没有给出 http* * *.fastq.gz 条目的列表。
谢谢!
您是否尝试过使用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)。请参阅一些关于正则表达式的教程以了解更多信息。
您可以使用字符“\”来转义点字符,因为 .(dot) 是任何字符的正则表达式示例:
c = re.match(r'^(http).*(\.*)id\.txt', b)