首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Regex抛出sre_constants错误

Regex抛出sre_constants错误
EN

Stack Overflow用户
提问于 2014-08-31 13:32:33
回答 1查看 38关注 0票数 0

我正在分析以下数据结构:

代码语言:javascript
复制
var teamFixtures = new WS.Panel(fixturesConfig);
teamFixtures.load([300, [[883762,1,'23-08-2014','17:00',300,'Atalanta',0,777,'Pisa',1,'2 : 0','1 : 0',1,0,'FT','2014/2015','Coppa Italia','1',60,108,5433,11361,'ICI','it','it',0,0,0]
,[883062,1,'16-08-2014','17:00',300,'Atalanta',0,267,'Chievo',0,'3 : 0','1 : 0',1,0,'FT','2014','Club Friendlies','1',57,247,4117,8489,'ICF','it','it',1,0,0]
,[875534,1,'09-08-2014','17:00',300,'Atalanta',0,1501,'Spezia',0,'2 : 0','1 : 0',1,0,'FT','2014','Club Friendlies','1',57,247,4117,8489,'ICF','it','it',1,0,0]
,[875542,1,'06-08-2014','17:00',300,'Atalanta',0,8183,'Feralpisalò',0,'1 : 0','0 : 0',1,0,'FT','2014','Club Friendlies','1',57,247,4117,8489,'ICF','it','it',1,0,0]
,[875541,1,'06-08-2014','15:00',300,'Atalanta',0,7587,'Renate',0,'1 : 0','0 : 0',1,0,'FT','2014','Club Friendlies','1',57,247,4117,8489,'ICF','it','it',1,0,0]
,[848157,1,'02-08-2014','19:30',300,'Atalanta',0,302,'Nantes',0,'*0 : 0','0 : 0',0,0,'PEN','2014','Club Friendlies','1',57,247,4117,8489,'ICF','it','fr',1,0,0]
], [[865781,4,'31-08-2014','17:00',300,'Atalanta',0,76,'Verona',0,'vs',,0,1,,'2014/2015','Serie A','-1',5,108,5441,11369,'ISA','it','it',0,1,0]
,[865791,4,'14-09-2014','14:00',78,'Cagliari',0,300,'Atalanta',0,'vs',,0,0,,'2014/2015','Serie A','-1',5,108,5441,11369,'ISA','it','it',0,1,0]
]]);

我使用以下Regex来定位开始字符串模式,然后返回列表列表中的所有内容:

代码语言:javascript
复制
regex = re.compile('var teamFixtures \= new WS\.Panel\(fixturesConfig\); teamFixtures\.load\([\d+, \[\[.*?\]\]?\)?;', re.S)

这将引发错误:

代码语言:javascript
复制
raise error, v # invalid expression
    sre_constants.error: unexpected end of regular expression

但在我看来,我似乎已经逃脱了这个表达式中的所有特殊字符,所以我不明白为什么我会收到这条消息。

有人能看到我哪里出了问题吗?

谢谢

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-08-31 13:39:39

您没有正确地转义正则表达式--一个开口括号未转义。请记住,正则表达式需要一组转义符,而python字符串则需要另一组;如果不想使用Python字符串转义,则使用原始字符串(r'')。

一个更有效的准则可以是:

代码语言:javascript
复制
regex = re.compile(r'teamFixtures\.load\(\[\d+,\s*(\[\[.*?]\s*])]\);', re.S)

您需要在那里转义的特殊字符是.()[;对于正则表达式,=;都不重要,实际上]也不需要转义。如果此regex匹配,则双列表可用为match.group(1),并且(如果它是适当的JSON ),可以轻松地使用json.loads加载到python中。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25592464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档