python:正则表达式提取两个文本之间的内容

时间:2015-08-22 00:44:57

标签: python regex

我想要一个python正则表达式,可以在script[""]之间提取内容,但还有其他"]"让我担心

预期: {bunch of javascript here. [\"apple\"] test}

我的尝试:

javascript\[\"(.*)"]

目标字符串:

//url//script["{bunch of javascript here. [\"apple\"] test}"]|//*[@attribute="eggs"]

link to the regex

2 个答案:

答案 0 :(得分:1)

您无法将嵌套括号与re模块匹配,因为它没有这样做的递归功能。但是,在您的示例中,如果您选择忽略双引号之间的所有括号,则可以跳过最里面的方括号。

尝试这样的事情:

p = re.compile(r'script\["([^\\"]*(?:\\.[^\\"]*)*)"]', re.S)

注意:我在这里假设谓词只与脚本节点的“文本”内容有关(而不是属性,一些项目或一个斧头)。

答案 1 :(得分:0)

由于您编写问题的方式,很难准确理解您想要实现的目标。但是,如果您在"]之后查找}的第一个实例,请尝试以下操作:

\["([^}]+}.*?)"\]

Link to the regex

这也可行:

 \["(.*?}.*?)"\]

Link to the second regex example