在python中,我试图得到一个这样的字符串:
abcd[_FILE:foo.txt_]efghi[_FILE:bar.txt_]jklm[_FILE:foo2.txt_]
匹配:
['foo.txt', 'bar.txt', 'foo2.txt']
但我不知道如何匹配完整的字符串段而不是单个字符。有谁知道我怎么写一个正则表达式来匹配'[ FILE'而不是'[','','F','我',......等等。
答案 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)