匹配正则表达式中的字符串段

时间:2011-05-12 19:02:20

标签: python regex

在python中,我试图得到一个这样的字符串:

abcd[_FILE:foo.txt_]efghi[_FILE:bar.txt_]jklm[_FILE:foo2.txt_]

匹配:

['foo.txt', 'bar.txt', 'foo2.txt']

但我不知道如何匹配完整的字符串段而不是单个字符。有谁知道我怎么写一个正则表达式来匹配'[ FILE'而不是'[','','F','我',......等等。

4 个答案:

答案 0 :(得分:4)

尝试这种模式:

import re
text = 'abcd[_FILE:foo.txt_]efghi[_FILE:bar.txt_]jklm[_FILE:foo2.txt_]'
pattern = re.compile('FILE:([\w\.]+)_\]')
pattern.findall(text)

输出:

['foo.txt', 'bar.txt', 'foo2.txt']

答案 1 :(得分:2)

import re
print re.findall('FILE:(\w+\.txt)', mystring)

答案 2 :(得分:2)

import re

regx = re.compile('[a-z]+\[_FILE:(.*?)_\]')


ch = 'abcd[_FILE:foo.txt_]efghi[_FILE:bar.txt_]jklm[_FILE:foo2.txt_] '

print regx.findall(ch)

[用于正则表达式的模式来定义一个集合,所以当你想要在一个模式中象征一个字符'['时,你必须逃避它

答案 3 :(得分:1)

您应该使用re.findall,它会在字符串中找到模式的所有非重叠匹配,并将其作为字符串列表返回。

import re
re.findall('_FILE:(.*?)_', string)