Это зависит от используемой вами реализации регулярного выражения.Вот пример использования расширенных регулярных выражений POSIX, который просто проверяет возвращаемое значение regcomp
и печатает сообщение об ошибке, полученное с помощью regerror
:
#include <regex.h>
#include <stdio.h>
#include <string.h>
void test(const char *regex) {
	regex_t preg;
	int errcode = regcomp(&preg, regex, REG_EXTENDED);
	if (errcode == 0) {
		printf("%s => Success\n", regex);
		regfree(&preg);
	}
	else {
		char errmsg[80];
		regerror(errcode, NULL, errmsg, 80);
		printf("%s => %s\n", regex, errmsg);
	}
}
int main() {
	test("(*\\.com)");
	test("(.*\\.com)");
	return 0;
}
Попробуйте онлайн!
Это должно напечатать что-то вроде:
(*\.com) => Invalid preceding regular expression
(.*\.com) => Success
Обратите внимание, что (*\.com)
является допустимым регулярным выражением POSIX basic , так как неэкранированный (
соответствуетбуквальный (
.Для базовых регулярных выражений *
в начале регулярного выражения или заключенного в скобки подвыражения также соответствует литералу *
.