我想在C程序中找到並匹配#include
指令並複製它們。Python正則表達式匹配一對引號或「<>」
所以我想創建一個正則表達式,它匹配兩個:
#include <stdlib.h>
#include "mylib.h"
和副本以便進一步處理。
當然,我可以創建兩個簡單的正則表達式,但我想只有一個匹配兩個。我不能 找出如何做到這一點。
所以我的一切是re.compile(r"\s*#\s*include\s*")
謝謝你的建議。
我想在C程序中找到並匹配#include
指令並複製它們。Python正則表達式匹配一對引號或「<>」
所以我想創建一個正則表達式,它匹配兩個:
#include <stdlib.h>
#include "mylib.h"
和副本以便進一步處理。
當然,我可以創建兩個簡單的正則表達式,但我想只有一個匹配兩個。我不能 找出如何做到這一點。
所以我的一切是re.compile(r"\s*#\s*include\s*")
謝謝你的建議。
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"']
以下模式匹配:
#include [<"]\w+?\.h[>"]
這種模式不會匹配'#include「foo.h>''只是想知道,我知道這不應該出現在C程序中 – EarlGrey
這是一個公平的觀點,但如果發生這種情況,c文件將無法編譯(我認爲它會) –
一種替代,只因爲我很少看到使用中的(?(id/name)yes|no)
表達的任何實例:
#\s*include\s*(?:(<)|("))\w+(\.\w+)?(?(1)>|")
我想達科夫不希望在比賽中有'<>「') – sphere
@sphere mmmm我相信他希望使用相同的表達式來匹配兩條線。 – thefourtheye
其實我想要整個行,即使使用'#include'指令,這就是爲什麼它存在於我發佈在問題中的正則表達式:) – dakov