我有一些这样的文字:
cc.Action = {
};
cc.FiniteTimeAction = {
};
cc.Speed = {
};
我想要的结果(列表)是:
['cc.Action = {}', 'cc.FiniteTimeAction = {}', 'cc.Speed = {}']
这是我尝试过的:
input = codecs.open(self.input_file, "r", "utf-8")
content = input.read()
result = re.findall('cc\..*= {.*};', content, re.S)
for r in result:
print r
print '---------------'
结果是:
[
'cc.Action = {
};
cc.FiniteTimeAction = {
};
cc.Speed = {
};'
]
任何建议将不胜感激,谢谢:)
最佳答案
匹配的开始似乎是 cc.
而匹配的结束似乎是 ;
所以我们可以使用模式:
'cc\.[^;]+'
意思是,我们匹配cc.
,然后匹配所有不是;
的字符([]
包含字符类,^
否定类)。
您也可以使用非贪婪重复 *?
,但在这种情况下,我认为这是一种矫枉过正。正则表达式越简单越好。
要获得所需的输入,您还必须去掉换行符。我会一起提议:
result = re.findall('cc\.[^;]*;', content.replace('\n', ''))
关于 python 正则表达式 : multiline and non-greedy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22833595/