是否有任何簡單的方法可以使用正則表達式篩選C中的字符串?C中的類似Grep的過濾器?
這裏是例如這樣的功能re(regexp,str,outstr)
的調用怎麼可能是這樣的:
printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));
,將填補outstr
與「傑拉爾赫拉爾」。
在C中最合適的方法是什麼?編寫我自己的函數或使用已有的函數(希望,多平臺,所以ANSI或任何便攜式標準庫是可取的)。
是否有任何簡單的方法可以使用正則表達式篩選C中的字符串?C中的類似Grep的過濾器?
這裏是例如這樣的功能re(regexp,str,outstr)
的調用怎麼可能是這樣的:
printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr));
,將填補outstr
與「傑拉爾赫拉爾」。
在C中最合適的方法是什麼?編寫我自己的函數或使用已有的函數(希望,多平臺,所以ANSI或任何便攜式標準庫是可取的)。
在POSIX世界,#include <regex.h>
應該導致你standard POSIX regex library
+1對於非雪橇格哈默爾方法。 PCRE的反向引用很好,但不包括NFA或DFA匹配算法,詳見http://swtch.com/~rsc/regexp/regexp1.html – Dave 2011-12-14 15:26:11
如果您想要可移植性,那麼您應該使用便攜式C編寫的正則表達式庫。例如PCRE。在C標準庫中沒有正則表達式支持,所以你必須向外看。
正規表達式沒有任何ANSI C的一部分,所以你需要依賴一些第三方庫。
這裏有兩個,我建議PCRE:
你可以寫一個Boost.Regex一個C-包裝:
http://www.boost.org/doc/libs/1_36_0/libs/regex/doc/html/index.html
HTTP ://stackoverflow.com/questions/725630/regular-expressions-in-c – 2011-12-14 14:45:00