如何在regex.h,C上匹配单词A或B或什么都不匹配?

时间:2019-09-03 09:20:14

标签: c regex

Development的环境是C上的regex.h。它是POSIX regex。  我放了一个REG_EXTENDED选项。 (http://man7.org/linux/man-pages/man3/regcomp.3.html

这是PostgreSQL的一些语法。 []部分可以忽略或使用单词。 ()部分必须使用一个词。 '|'表示OR。

SET [SESSION|LOCAL] SEARCH_PATH (TO|=) (SCHEMA|'SCHEMA'|"SCHEMA");

例如,这种语法可以是这样的。

#1: SET SEARCH_PATH TO SCHEMA;
#2: SET SESSION SEARCH_PATH = "SCHEMA";

我想解析架构的名称。但是我无法制作正确的正则表达式。

当忽略忽略的部分时,我制作了此正则表达式。不要考虑案件。我已经设置了忽略大小写选项。

^\\s*set\\s+search_path\\s+(to|=)\\s+['\"]?([a-z0-9_$$]?+)['\"]?

但是,如果我放置会话或本地,则它不起作用。所以我修复了这个正则表达式。但是我不能确保匹配正确的句子。这就是我尝试过的。

^\\s*set\\s+(session\\s+|local\\s+)?search_path\\s+(to|=)\\s+['\"]?([a-z0-9_$$]?+)['\"]?

所以我希望使regex可以匹配正确的语法。

编辑: 我对此进行了测试,并且可以很好地工作。您可以在此网页上看到我尝试过的内容。 https://regex101.com/r/5zclS7/3
但是在C上,它不起作用。

0 个答案:

没有答案