符号之间的匹配模式,给定模式后

问题描述:

我想查找一个字符串的第一个匹配项,在某个其他字符串之后,以及某个特定模式之间。我解析的文档不是xml,但具有类似的开始/结束规则。什么的例子,我会在看:符号之间的匹配模式,给定模式后

...b.filext", "{xxxxx-xxx-xxx-xxx-xxxxxxxxxxx}" 

,我试图让之间的{和}的字符串,一vcxproj的发生之后,每次它发生在文件中的时间。 我尝试以下,但我得到无列表:

my_list=[] 
for line in text.split('.vcxproj'): 
    if '{' in line: 
     my_list.append(re.match(r"(?<=\{)(.*?)(?=\})", line)) 

我试图改变我的表情,但没有成功。帮帮我 ?谢谢。

+0

注意,如果语法不能递归(文字匹配,也可能发生作为一个子字符串),它不是像XML。正是这种递归性质使正则表达式不适合XML解析。 – outis 2012-04-02 18:33:28

如何:

re.findall(r"vcxproj.*?\{(.*?)\}", text) 
+0

这是完美的! – Thalia 2012-04-02 18:43:46

re.match只匹配字符串的开头。尝试re.search。或者,将环路替换为re.findall

+0

谢谢,我正在比赛。但他们看起来像:<_sre.sre_match>而不是实际的字符串...我没有想到这一点? – Thalia 2012-04-02 18:38:27

+1

@ user1217150:'re.search'返回一个'match'对象。为了访问匹配的字符串,必须在匹配对象上调用'.group()'或'.groups()'。 – 2012-04-02 18:41:36

+0

@ user1217150:阅读[re documentation](http://docs.python.org/library/re.html)。到目前为止,您的所有问题都在那里得到解答考虑选择一个[有意义的用户名](http://tinyurl.com/so-hints),所以你会收到[@replies]的通知(http://meta.stackexchange.com/q/43019/133817)。 – outis 2012-04-02 18:48:33