2014-01-10 61 views
0

我想在C程序中找到並匹配#include指令並複製它們。Python正則表達式匹配一對引號或「<>」

所以我想創建一個正則表達式,它匹配兩個:

#include <stdlib.h> 
#include "mylib.h" 

和副本以便進一步處理。

當然,我可以創建兩個簡單的正則表達式,但我想只有一個匹配兩個。我不能 找出如何做到這一點。

所以我的一切是re.compile(r"\s*#\s*include\s*")

謝謝你的建議。

回答

2
data = """ 
#include <stdlib.h> 
#include "mylib.h" 
""" 
import re 
pattern = re.compile("#\s*include\s*(?:<.*?>|\".*?\")") 
print pattern.findall(data) 

輸出

['#include <stdlib.h>', '#include "mylib.h"'] 
+0

我想達科夫不希望在比賽中有'<>「') – sphere

+0

@sphere mmmm我相信他希望使用相同的表達式來匹配兩條線。 – thefourtheye

+0

其實我想要整個行,即使使用'#include'指令,這就是爲什麼它存在於我發佈在問題中的正則表達式:) – dakov

0

以下模式匹配:

#include [<"]\w+?\.h[>"]

+0

這種模式不會匹配'#include「foo.h>''只是想知道,我知道這不應該出現在C程序中 – EarlGrey

+0

這是一個公平的觀點,但如果發生這種情況,c文件將無法編譯(我認爲它會) –

0

一種替代,只因爲我很少看到使用中的(?(id/name)yes|no)表達的任何實例:

#\s*include\s*(?:(<)|("))\w+(\.\w+)?(?(1)>|") 
相關問題