2011-12-14 59 views
3

是否有任何簡單的方法可以使用正則表達式篩選C中的字符串?C中的類似Grep的過濾器?

這裏是例如這樣的功能re(regexp,str,outstr)的調用怎麼可能是這樣的:

printf("%s\n", re("G*o", "Geraldo Gerardo German", outstr)); 

,將填補outstr與「傑拉爾赫拉爾」。

在C中最合適的方法是什麼?編寫我自己的函數或使用已有的函數(希望,多平臺,所以ANSI或任何便攜式標準庫是可取的)。

+0

HTTP ://stackoverflow.com/questions/725630/regular-expressions-in-c – 2011-12-14 14:45:00

回答

4

在POSIX世界,#include <regex.h>應該導致你standard POSIX regex library

+0

+1對於非雪橇格哈默爾方法。 PCRE的反向引用很好,但不包括NFA或DFA匹配算法,詳見http://swtch.com/~rsc/regexp/regexp1.html – Dave 2011-12-14 15:26:11

2

如果您想要可移植性,那麼您應該使用便攜式C編寫的正則表達式庫。例如PCRE。在C標準庫中沒有正則表達式支持,所以你必須向外看。

1

您可以使用類似PCREre2(後者需要一個C包裝)。但是,我不知道在printf中直接使用這種函數的輸出是一個好主意。如果沒有匹配怎麼辦? (此外,您的正則表達式將不會匹配字符串。你可能是指"G.*o"

相關問題