2012-02-17 3 views
-1

У меня есть требование сохранить регулярное выражение в плоском файле и прочитать их. Будет 1000 регулярных выражений (я имею в виду 1000 строк с 3 шаблонами регулярных выражений, каждый на одной строке, разделенной метрикой, например, #). И первое regex1 имеет тип hex и другие 2 являются целыми числами.Регулярное выражение в C/C++

FLAT FILE будет

regex1 # regex2 # regex3

я теперь 2 требование 1) Я хочу бросить ошибку, если регулярное выражение не являются действительными. Это im делает через функцию regcomp, и это в основном проверяет, является ли это правильным регулярным выражением или нет (например, отсутствующие скобки и все).

2) У меня есть еще одно требование, в котором мне нужно выполнить все возможные значения для регулярного выражения, которое может быть выведено, и выдавать ошибку, если оператор вводит неправильную запись в файл.

Как достичь своей второй цели моего второго вопроса

Значение

говорит regex1 могут быть представлены в шестнадцатеричном, но она может быть представлена ​​во многих отношениях, я KNW длину regex1, regex2 и regex3 . Но я хочу знать, являются ли они действительными регулярными выражениями или нет.

в основном коротким я хочу, чтобы knw есть что-нибудь в библиотеке C regex, которая проверит мой шаблон регулярного выражения.

+0

Когда вы хотите библиотеку C, почему этот помеченный C++? – PlasmaHH

+0

C AND C++ любое решение shuld должно быть прекрасным, кроме библиотеки boost – user1216529

ответ

0

Я имел большую удачу с pcre. Это легкий, простой C-код, который обрабатывает регулярное синтаксическое выражение очень хорошо, и это также очень быстро.

+0

Я использую функцию regcomp для проверки основного регулярного выражения, и я могу использовать regexec для фактического проверки шаблона, соответствующего строке запроса, но я не могу найти какую-либо функцию, которая скажет мне, действительно ли шаблон является правильным шаблоном или нет. Это мой query – user1216529

+0

Если 'regcomp()' обнаруживает недействительный RE, он может возвращать 'REG_BADPAT', или он может вернуть один из кодов ошибок tha t более точно описывает ошибку. http://pubs.opengroup.org/onlinepubs/009695399/functions/regcomp.html – StilesCrisis

+0

Если это не то, что вы ищете, что вы подразумеваете под «действительным шаблоном»? – StilesCrisis

1

Я бы использовал boost :: regex для этого, если вы не против использовать внешнюю библиотеку. Он имеет несколько способов проверки правильных выражений и, как правило, генерирует исключения, указывающие, что выражение, которое вы пытаетесь использовать, является недопустимым.

http://www.boost.org/doc/libs/1_32_0/libs/regex/doc/basic_regex.html

+0

Спасибо за ответ, но .. я вынужден не использовать boost :(из-за некоторых ограничений – user1216529

+0

'std :: regex' тогда? – wilhelmtell

+0

да согласен с использованием этого только, но я использую функцию regcomp для проверки основного регулярного выражения, и я могу использовать regexec для фактического проверки шаблона, соответствующего строке запроса, но я не могу найти какую-либо функцию, которая скажет мне, действительно ли шаблон является правильным шаблоном или нет. Это мой query – user1216529

Смежные вопросы