Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

Составить регулярное выражение под приведенные требования - C++

24.01.2014, 08:39. Просмотров 349. Ответов 3
Метки нет (Все метки)

Может ли кто-нибудь написать или подсказать, как пишется регулярное выражение для следующих условий:
1) Русские буквы с различением регистра
2) Пробелы могут быть использованы
3) Пустая строка не допустима
4) Пробел в начале строки и в конце строки - не допустим
5) Количество пробелов подряд - не более одного

И есть так же дополнительные условия, которые можно и не выполнять, если это слишком сложно:
6) Между словами может быть дефис (перед и после дефиса могут быть пробелы, а могут и не быть, т.е. их либо 2, либо 0 : "_-_" ("_" - пробел) или "-")
7) Можно использовать скобки одинарной вложенности. Перед первой скобкой должен быть пробел. Больше пробел, разделяющих слова и скобки быть не должно.

С регулярными совсем не силен. Всё, что знаю - википедия и пару статей. Изначально была задача детектировать только русские слова, поэтому регулярка была такая [а-яА-Я], но потом понеслось.. теперь вот и не знаю, как его писать
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
24.01.2014, 08:39
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Составить регулярное выражение под приведенные требования (C++):

Составить регулярное выражение - C++
Здравствуйте, помогите пожалуйста составить регулярное выражение для поиска фамилии и инициалов, например: Иванов И. И. Всё, что я смог...

Составить регулярное выражение - C++
Нужно составить регулярку: проверить является ли строка индентификатором в C++ длиной не более 33 символов. Считается что индентификатор...

Не могу составить регулярное выражение. Не понимаю синтаксис - C++
Есть у меня строка "C:\Users\My\example.txt" Как должно выглядеть регулярное выражение на с++, шаблон или маска этой строки, чтобы её...

Составить регулярное выражение, которое будет анализировать переменные - C++
Здравствуйте! Условие задачи: На вход программы подается текстовый файл (с именем INPUT.TXT), содержащий только описания...

Составить регулярное выражение, пропускающее строки, являющиеся целыми числами в заданном диапазоне - C++
Ребя помогите пожалуйста. Я ничего не понимаю из того что ниже написано, а лабораторную по теории автоматов сдать надо! Для каждого из...

Каким образом можно использовать регулярное выражение regex из .NET под С++ - C++
Работаю в VS Express 2012. Насколько понимаю, эта библиотека должна подключаться и к проекту на С++, но как это сделать, чтобы не надо...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
kabernet1971
2 / 2 / 0
Регистрация: 16.01.2014
Сообщений: 24
24.01.2014, 08:58 #2
насколько я понимаю надо просто перелопатить еще раз главу ввода-вывода, там по-моему все разжевано, как форматировать ввод-вывод, с перебором регистров и пробелов... могу глубоко ошибаться, но именно сам недавно читал что-то такое.... алгоритмы сортировки.... стандартная библиотека.... если код в чистом виде сортировки, то без ознакомления с этими алгоритмами в теории почти не разобраться.... я так думаю.... вообще трудно вопрос понять-то... различия регистра важно только при выводе? так ведь? понимаю, что не помог ни чем, но сам изучаю, поэтому посмотрю, что умные люди скажут....
0
pav1uxa
1812 / 1655 / 632
Регистрация: 23.01.2014
Сообщений: 5,987
Завершенные тесты: 1
24.01.2014, 09:05 #3
1. это регулярное выражение для одной строки, или могут быть переносы строк?
2. русских слов с пробелами\дефисами между ними может быть сколько угодно?
3. если есть пробел вначале\конце строки то вам сразу не подходит эта строка, или вам нужно просто выделить часть без пробелов на концах?
4. в конечном счете вам нужно просто проверить всю строку на условия, или же выделить какие то ее части?
5. если нужно просто проверить то зачем Вам нужны русские буквы с учетом регистра, если вам подходят и заглавные и прописные?
6. дефис может быть только между словами, или вначале и в конце строки тоже? тоже самое про скобки.
7. кроме русских букв, пробелов, дефисов и скобок символы больше не используются? точки запятые там и т.д.

Что то уж слишком страшные условия, не могу даже вообразить для чего такое нужно
0
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
24.01.2014, 09:21  [ТС] #4
kabernet1971, это совсем не о том. Почитайте: http://ru.wikipedia.org/wiki/Регулярные_выражения
pav1uxa,
1) Я вроде бы указал все, что может быть. Переносов строк я не указывал. Их быть не может. Одна строка.
2) Да, может быть даже нечто вроде "здоровый_-_мускулистый-мачо_-_мучачо" ("_" - пробелы)
3) Сразу не подходит
4) Проверить на все условия, что я написал выше. Любая строка, которая не удовлетворяет хотя бы одному из условий - невалидна.
5) Видимо я не так написал, или вы меня не так поняли. Я имел ввиду, что могут быть как строчные буквы в словах, так и заглавные. По сути, можно всю строку привести к заглавным буквам и проверять слова уже через [А-Я], а не [а-яА-Я].
6) Дефис может быть только между словами. В начале или в конце - нет, как и пробел.
7) Главное - перед первой "(" скобкой должен быть пробел, а так как пробел не может быть первым символом, значит скобка должна быть после слова. После последней ")" скобки (об этом забыл сказать) не должно быть ничего, т.е., если скобки есть, то они в конце строки.

Это ещё нормально, вот если бы скобок можно было больше ставить, да ещё и учитывать, что подряд две пары скобок идти не могут, а если вставить между ними слово - могут, или что дефисом можно разделять только два слова.. вот тогда ужас, а это ещё цветочки..
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.01.2014, 09:21
Привет! Вот еще темы с ответами:

Регулярное выражение - C++
Добрый день! Помогите расшифровать регулярное выражение, что оно ищет. (;.*|.*|)+

Регулярное выражение - C++
Дана последовательность (-1.2+3.0)+2-8/6. Надо разбить строку на символы и числа. Как нужно отредактировать этот шаблон, чтобы число с...

Регулярное выражение - C++
Пишу под Qt и получил такую проблему. Почему данный код не выводит чего либо в консоль?: QString data("<div class=\"text\">xxx:<br>ну...

Не работает регулярное выражение - C++
Здравствуйте, есть метод с регулярным выражением: bool Library::ValidGenreCode(std::string genreCode) { const std::string genreCodeExp...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
24.01.2014, 09:21
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru