到目前爲止,我一直在使用我的程序regcomp
在常規字符串上使用正則表達式。Regcomp用於匹配非ASCII流中的模式的替代
現在,我需要在非ASCII二進制流中找到特定的字節模式:我的理解是regcomp
在這種情況下無法工作。
實際上,我想的東西,讓我定義 - 假設 - 3字節模式,可能使用16進制:
\x27\x87\xFE
感謝
到目前爲止,我一直在使用我的程序regcomp
在常規字符串上使用正則表達式。Regcomp用於匹配非ASCII流中的模式的替代
現在,我需要在非ASCII二進制流中找到特定的字節模式:我的理解是regcomp
在這種情況下無法工作。
實際上,我想的東西,讓我定義 - 假設 - 3字節模式,可能使用16進制:
\x27\x87\xFE
感謝
如果你需要一個正則表達式庫,適用於UTF-8,你應該使用Phillip Hazel’s excellent PCRE library。
我在短髮現了什麼:
regexp.h不解釋輸入字符串。這意味着: 你可以很容易地傳遞任意字節到regcomp
像這樣
char buffer [10] =「\ x01abcd \ x03」;
但是,當涉及到傳遞上面用ASCII編碼的相同字符串時,regexp.h不會將其解釋爲C編譯器所做的。
當解析網絡資料時,PCRE會更好地工作。謝謝tchrist
其實我正在網絡二進制協議。 – ziu 2012-03-06 23:11:30
@ziu我不知道常規regcomp(3)然後不允許使用8位代碼。他們真的嗎?我從來沒有聽說過這樣的限制。這是一個POSIX函數(IEEE Std 1003.2),所以應該使用8位語言環境。究竟是什麼問題?符號? – tchrist 2012-03-06 23:14:36
我的問題是,我試圖讓regcomp使用不可打印的字節 - 即ASCII範圍之外的任意字節值 - 但我無法使它符合我的模式。 – ziu 2012-03-06 23:26:58