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

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

Восстановить пароль Регистрация
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
24.01.2014, 08:39     Составить регулярное выражение под приведенные требования #1
Может ли кто-нибудь написать или подсказать, как пишется регулярное выражение для следующих условий:
1) Русские буквы с различением регистра
2) Пробелы могут быть использованы
3) Пустая строка не допустима
4) Пробел в начале строки и в конце строки - не допустим
5) Количество пробелов подряд - не более одного

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

С регулярными совсем не силен. Всё, что знаю - википедия и пару статей. Изначально была задача детектировать только русские слова, поэтому регулярка была такая [а-яА-Я], но потом понеслось.. теперь вот и не знаю, как его писать
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
kabernet1971
2 / 2 / 0
Регистрация: 16.01.2014
Сообщений: 24
24.01.2014, 08:58     Составить регулярное выражение под приведенные требования #2
насколько я понимаю надо просто перелопатить еще раз главу ввода-вывода, там по-моему все разжевано, как форматировать ввод-вывод, с перебором регистров и пробелов... могу глубоко ошибаться, но именно сам недавно читал что-то такое.... алгоритмы сортировки.... стандартная библиотека.... если код в чистом виде сортировки, то без ознакомления с этими алгоритмами в теории почти не разобраться.... я так думаю.... вообще трудно вопрос понять-то... различия регистра важно только при выводе? так ведь? понимаю, что не помог ни чем, но сам изучаю, поэтому посмотрю, что умные люди скажут....
pav1uxa
1710 / 1550 / 599
Регистрация: 23.01.2014
Сообщений: 5,601
Завершенные тесты: 1
24.01.2014, 09:05     Составить регулярное выражение под приведенные требования #3
1. это регулярное выражение для одной строки, или могут быть переносы строк?
2. русских слов с пробелами\дефисами между ними может быть сколько угодно?
3. если есть пробел вначале\конце строки то вам сразу не подходит эта строка, или вам нужно просто выделить часть без пробелов на концах?
4. в конечном счете вам нужно просто проверить всю строку на условия, или же выделить какие то ее части?
5. если нужно просто проверить то зачем Вам нужны русские буквы с учетом регистра, если вам подходят и заглавные и прописные?
6. дефис может быть только между словами, или вначале и в конце строки тоже? тоже самое про скобки.
7. кроме русских букв, пробелов, дефисов и скобок символы больше не используются? точки запятые там и т.д.

Что то уж слишком страшные условия, не могу даже вообразить для чего такое нужно
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) Главное - перед первой "(" скобкой должен быть пробел, а так как пробел не может быть первым символом, значит скобка должна быть после слова. После последней ")" скобки (об этом забыл сказать) не должно быть ничего, т.е., если скобки есть, то они в конце строки.

Это ещё нормально, вот если бы скобок можно было больше ставить, да ещё и учитывать, что подряд две пары скобок идти не могут, а если вставить между ними слово - могут, или что дефисом можно разделять только два слова.. вот тогда ужас, а это ещё цветочки..
Yandex
Объявления
24.01.2014, 09:21     Составить регулярное выражение под приведенные требования
Ответ Создать тему
Опции темы

Текущее время: 03:05. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru