2012-04-02 49 views
0

我想查找一個字符串的第一個匹配項,在某個其他字符串之後,以及某個特定模式之間。我解析的文檔不是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

回答

1

如何:

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

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

2

re.match只匹配字符串的開頭。嘗試re.search。或者,將環路替換爲re.findall

+0

謝謝,我正在比賽。但他們看起來像:<_sre.SRE_Match對象在0x023AE220>而不是實際的字符串...我沒有想到這一點? – 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