2016-08-04 117 views
-2

我是C編程的新手。是否有可能匹配C字符串中的模式,就像任何內置函數一樣?我可以在C程序中使用模式匹配嗎?

我使用的是Red Hat Linux,我想檢查一個字符串是否以abc:def:後跟10位數字@字符開頭。例如:(abc|def):([0-9]{10})@([A-Za-z0-9]*)

是否有任何C內置函數,我可以用它來檢查這種模式匹配。

感謝您的幫助。

回答

1

您可以在Linux中使用POSIX正則表達式匹配。有關更多詳細信息,請參閱man 3正則表達式。 如果你正在尋找一個快速,安全和線程化的庫,你可以使用谷歌的re2庫,支持像預編譯的正則表達式。 (https://github.com/google/re2

0

Linux和POSIX有regex(3)函數。你需要首先使用regcomp來「編譯」 - 這是通過轉換你的正則表達式字符串來準備的。

在一些簡單的情況下,也可以使用其他字符串函數,如strstrstrchrsscanf(3)(該%n格式說明可能是很方便,要知道你有多少字節掃描)。

您也可以考慮一些lexing實用程序,也許使用flex來生成能夠識別您的正則表達式的標記器。

相關問題