Tag: 正则表达式

调车场算法能解析POSIX正则表达式吗?

乍一看, 分流码算法似乎适用于POSIX正则表达式解析,但由于我在编写解析器方面没有太多经验(或理论背景),我想在跳入并写入内容之前先询问SO半途而废。 也许这个问题的一个更复杂的版本是:对于分流码算法可以应用的问题类别的正式陈述是什么? 澄清:这个问题是关于您是否可以使用分流算法的基本原理将POSIX语法解析为抽象语法树,而不是您是否可以使用正则表达式来实现分流算法。 对不起我说不清楚开头!

C编译器警告未知的转义序列’\。’ 使用正则表达式进行c程序

我正在使用正则表达式来确定具有.dat扩展名的命令行参数。 我正在尝试以下正则表达式: #define to_find “^.*\.(dat)?” 出于某种原因,我收到了我在这个问题标题中所说的警告。 首先,这个表达是否正确? 我相信它是。 第二,如果它是正确的,我怎么能摆脱这个警告? 我在Xcode中编写ac程序,上面的#define在我的.h文件中。 谢谢!

为什么c ++ 11 regex(libc ++实现)如此之慢?

我与Linux C正则表达式库比较, #include #include #include int main() { const int count = 100000; regex_t exp; int rv = regcomp(&exp, R”_(([a-zA-Z][a-zA-Z0-9]*)://([^ /]+)(/[^ ]*)?)_”, REG_EXTENDED); if (rv != 0) { std::cout << "regcomp failed with " << rv << std::endl; } auto start = std::chrono::high_resolution_clock::now(); for (int i = 0; i < count; i++) { regmatch_t match; […]

c正则表达式howto

我看了c已经10年了。 我需要在c中编写一个解析字符串的小程序。 我想使用正则表达式,因为我多年来一直在使用它们,但我不知道如何在c中这样做。 我花了早上谷歌搜索,我找不到任何直接的例子(即使用这个库,这是方法)。 有人能给我一个简单的例子吗? 谢谢!

C或C ++有标准的正则表达式库吗?

可以? 如果是,我在哪里可以得到它的文件……如果没有,那么哪个是最好的选择?

如何在C或C ++中编写简单的正则表达式模式匹配函数?

这是我今天的论文测试中的一个问题,函数签名是 int is_match(char* pattern,char* string) 该模式仅限于ASCII字符和量化*和? ,所以它相对简单。 如果匹配则is_match应返回1,否则返回0。 我该怎么做呢?

C – pellucid regex.h使用教程

我需要在C中使用正则表达式,并且正在寻找关于其使用以及如何捕获子串的清晰教程。 (我在linux上使用regex.h库) 我以前在其他语言中使用过正则表达式,所以知道如何构造实际的表达式,我正在寻找一个关于它在C中实现的教程。 谢谢。

C匹配和打印中的正则表达式

我有这样的文件行: {123} {12.3.2015 moday} {THIS IS A TEST} 是否有可能获得括号{}和插入数组之间的每个值? 此外,我想知道是否有其他解决方案来解决这个问题… 得到这样的: array( 123, ‘12.3.2015 moday’, ‘THIS IS A TEST’ ) 我的尝试: int r; regex_t reg; regmatch_t match[2]; char *line = “{123} {12.3.2015 moday} {THIS IS A TEST}”; regcomp(&reg, “[{](.*?)*[}]”, REG_ICASE | REG_EXTENDED); r = regexec(&reg, line, 2, match, 0); if (r == 0) { printf(“Match!\n”); […]

正则表达式C中奇怪的空白字符行为

我在C中使用正则表达式时遇到问题。我想收集命令(GET,PUT或DEL)和文件路径,以便将正确的命令发送到服务器。 如果我只编译’ [[:blank:]]*(GET|PUT|DEL|HELP) ‘ ,代码可以工作,我会收集正确的东西。 但是,当我向表达式添加内容时,例如: ‘[[:blank:]]*(GET|PUT|DEL|HELP)[[:blank:]]+([az])’ ,regexec返回REG_NOMATCH 。 你有解决方案或者你知道为什么吗? 这是我的代码: #include #include “dgb.h” #include #include #include #include DEFINE MODE “client” int main(int argc, char *argv[]) { regex_t preg; const char *str_regex = “[[:blank:]]*(GET|PUT|DEL|HELP)[[:blank:]]+([az])”; char str_request[51]; int reg_init; int reg_request; size_t nmatch = 0; regmatch_t *pmatch = NULL; reg_init = regcomp(&preg, str_regex, REG_ICASE); if (reg_init […]

C ++子模式匹配

谁能告诉我一个关于在C / C ++中使用正则表达式(regex.h)来搜索和/或提取正则表达式中的子模式的例子。 在javascript中,它会是这样的, var str = “the string contains 123 dots and 344 chars”; var r = /the string contains ([0-9].*?) dots and ([0-9].*?) chars/; var res = r.exec(str); var dots = res[1]; var chars = res[2]; alert(‘dots ‘ + dots + ‘ and chars ‘ + chars); 如何在c / c ++中使用regex.h(不是boost或任何其他库)? 谢谢,