2016-08-04 74 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来生成能够识别您的正则表达式的标记器。

相关问题