我已經看過POSIX正則表達式庫和PCRE庫中的正則表達式函數,但它們似乎都沒有字符串替換函數。我不想使用C++,如果我不需要鏈接另一個庫(但我可以,如果必須的話)將是最好的。我是否需要手動進行字符串替換?如果是這樣,我如何使用捕獲組?如何在純C中執行regex字符串替換?
回答
regex.h不提供對字符串替換的本機支持,但它確實提供了使表達更容易的子表達式/捕獲組。我假設你熟悉正則表達式編譯並跳到正則表達式執行和子表達式。
regexec()被定義爲在regex.h如下(在/ usr /包括/):
extern int regexec (const regex_t *__restrict __preg,
const char *__restrict __string, size_t __nmatch,
regmatch_t __pmatch[__restrict_arr],
int __eflags);
第一,第二和最後的參數是正則表達式,要在與執行的標誌執行的字符串, 分別。第三個和第四個參數用於指定regmatch_t的數組。 regmatch_t由兩個字段組成:rm_so和rm_eo,它們分別是匹配區域開始和結束的索引或偏移量。然後可以將這些索引與string.h中的memcpy(),memset()和memmove()一起使用以執行字符串替換。
我會舉一個小例子,稍後發佈。
祝你好運,我希望這有助於。
+1這樣的答案,你應該有超過308代表! –
*我會舉一個小例子,稍後發佈。*什麼時候?你在5年前做出了這個承諾。 ;([Here are](http://stackoverflow.com/questions/1085083/regular-expressions-in-c-examples)我發現迄今爲止的幾個例子 –
PCRE庫本身不提供替換功能,但在PCRE下載頁面有一個包裝函數,它接受perl風格=~ s/pattern/replace/
語法,然後使用PCRE本機函數爲您替換/替換。轉至http://www.pcre.org/,然後點擊下載鏈接:ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/,然後點擊Contrib目錄。你想要的包/項目是:pcrs-0.0.3-src.tar.gz
。
請注意,我沒有使用這個我自己,所以我不能證明它的工作效果。這是一段相當小而簡單的代碼,因此它可以很好地爲您的目的服務。
嗨,感謝您的鏈接。在我的程序中使用pcrs?我目前使用pcre_compile和pcre_exec函數,如http://stackoverflow.com/a/1421923/1729501 – user13107
- 1. PHP RegEx字符串替換
- 2. 如何在C#中替換字符串?
- 3. 如何在LOGO中執行子字符串替換?
- 4. 在C#替換字符串
- 5. 字符串替換在C#
- 6. 如何通過RegEx替換路徑中的任意字符串?
- 7. PHP/Regex:如何替換PHP腳本中的所有字符串
- 8. 如何在字符串的一個子部分上執行字符串替換?
- 9. 如何在子字符串包含等號時執行子字符串替換?
- 10. 如何在c#中替換一些字符黑白字符串?
- 11. 如何在C++中用「*」替換字符串內的字符?
- 12. 如何在多個文件上執行字符串替換?
- 13. 如何使用R中的RegEx替換字符串中的字符
- 14. c中的字符串替換字符#
- 15. 替換字符串中的字符C
- 16. 用Regex替換部分匹配的字符串。替換
- 17. RegEx用空格替換字符串中的特殊字符? asp.net C#
- 18. 如何使用RegEx替換字符串中所有不需要的字符?
- 19. 增強字符串替換不會替換換行字符串
- 20. 在C#中替換字符串值?
- 21. 在字符串C中用「\\」替換'\'#
- 22. 如何在PHP中替換字符串?
- 23. 如何在Perl中替換字符串?
- 24. 如何在eclipse中替換字符串?
- 25. 如何在java中替換字符串?
- 26. 如何在javascript中替換字符串
- 27. C#如何在集合上進行字符串替換方法?
- 28. C# - 字符串替換
- 29. C#替換字符串
- 30. C#替換字符串
你指的是什麼捕獲組?正則表達式沒有內置的C庫,你將不得不使用pcre或者像這樣的somithing。 – lvella
一般而言,您不能在C字符串內進行字符串替換 - 您可能沒有可用的內存。你能澄清你到底想要做什麼嗎? –
所以你想讓我具體嗎?我有一個HTTP請求頭,我想使用正則表達式來更改並轉發到服務器。 – Yifan