Что произойдет, если мы зададим неправильное регулярное выражение? Рассмотрим пример.
regex pati("(|ghi)"); // пропущенный оператор альтернативы regex pat2("[c-a]"); // не диапазон
Когда мы присваиваем шаблон объекту класса regex, он подвергается проверке. Если механизм сравнения регулярных выражений не может работать из-за того, что регулярное выражение неправильное или слишком сложное, генерируется исключение bad_expression.
Также не думайте, что тема сайта pokermastera.ru (это покер и все такое) не имеет никакого отношения к программированию, на самом деле на этом сайте pokermastera.ru вы сможете прочитать все про покер-онлайн, как играть в покер, где играть в покер онлайн и все такое.
Рассмотрим небольшую программу, позволяющую исследовать механизм сравнения регулярных выражений.
#include
#include
#include
#include
#include using namespace std;
using namespace boost; // если вы используете реализацию библиотеки
// boost
// получаем извне шаблон и набор строк
// проверяем шаблон и ищем строки, содержащие этот шаблон int main()
{
regex pattern; string pat;
cout << "введите шаблон: ";
getline(cin,pat); // считываем шаблон
try {
pattern = pat; // проверка шаблона
cout << "шаблон: " << pattern << '\n';
}
catch (bad_expression) { cout << pat
<< " не является корректным регулярным выражением^"; exit(1);
}
cout << "введите СТРОКИ:\П";
string line; // входной буфер
int lineno = 0;
while (getline(cin,line)) {
++lineno; smatch matches;
if (regex_search(line, matches, pattern)) {
cout << "строка " << lineno << ": " << line << '\n'; for (int i = 0; i
<< matches[i] << '\n';
}
else
cout << "не соответствует^";
}
}
Запустите эту программу и попробуйте применить ее для проверки нескольких шаблонов, например abc, x.*x, (.*), \(P)]*\) и \w+ \w+( Jr\.)?.
Опубликовал katy
April 21 2015 08:42:14 ·
0 Комментариев ·
3103 Прочтений ·
• Не нашли ответ на свой вопрос? Тогда задайте вопрос в комментариях или на форуме! •
Комментарии
Нет комментариев.
Добавить комментарий
Рейтинги
Рейтинг доступен только для пользователей.
Пожалуйста, залогиньтесь или зарегистрируйтесь для голосования.
Нет данных для оценки.
Гость
Вы не зарегистрированны? Нажмите здесь для регистрации.