как записать regexp паттерн
\s*[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+\s*[\-:—]\s*[абвгдеёжзийклмнопрстуфхцчшщъыьэюя]+\s*[:]?\s*\d.*
вместо перечисления русского алфавита можно сделать через указание интервалов кодов в юникоде, но мне лень искать какие там коды. Плюс, в этом примере надо запускать с флагом CaseInsensitive
и посмотри - работает ли движок, который ты используешь на
ля-ля 5
если нет, то самое простое - сделать два регекспа. Один на случай, если двоеточие перед цифрой есть, второй - если нет
[:]?А почему не просто :?
( : (двоеточие возможно окружённое пробелами, может просто пробелы без : )
\s можно включать в []
вот эта фраза не совсем ясна:
разделитель из пробела или других символов типа -, :, — , с обоих сторон ещё и пробелы могут бытьимеется ввиду вперемежку пробелы и знаки?
или если несоклько знаков то пробелы между ними нельзя?
короче, вот это нормально? " :- :- " или должно быть только " :-:- "?
\s*[А-Яа-яЁё]+[\s-:—]*[А-Яа-яЁё]+\s*:?\s*\d.*
почему [:]? я кстати тоже не понял
что ответил тем более не понял
ответил правильно на вопрос «А почему не просто :?», либо вопрос «А почему не просто :??» был сформулирован грамматически неверно — без вопросительного знака в конце. 
Кстати, тоже не понял, зачем писать [:]?, если можно написать :?.
Либо 
Кстати, тоже не понял, зачем писать [:]?, если можно написать :?.
RegexBuddy .
Там есть такая прикольная штука как отображение регэкспов в токенах.
Еще не понял, насколько это полезно, но вполне может помочь лучше разобраться в регэкспе.
Есть такая прога - Там есть такая прикольная штука как отображение регэкспов в токенах.
Еще не понял, насколько это полезно, но вполне может помочь лучше разобраться в регэкспе.
тоже ею пользуюсь

правда редко, обычно сходу пишу

Кстати, тоже не понял, зачем писать [:]?, если можно написать :?.+1.
Только, вроде бы, всё-таки \:?
Python, модуль re.
\:?в регэкспах экранируются "команды"
: - это какая команда?
The fact that plain parentheses fulfil two functions is not always helpful. There are often times when a grouping subpattern is required without a capturing requirement. If an opening parenthesis is followed by "?:", the subpattern does not do any capturing, and is not counted when computing the number of any subsequent capturing subpatterns. For example, if the string "the white queen" is matched against the pattern the ?:red|white) (king|queen the captured substrings are "white queen" and "queen", and are numbered 1 and 2. The maximum number of captured substrings is 99, and the maximum number of all subpatterns, both capturing and non-capturing, is 200.Т.е., у двоеточия есть и специальное значение.
As a convenient shorthand, if any option settings are required at the start of a non-capturing subpattern, the option letters may appear between the "?" and the ":".
Так что, лучше, во избежание неприятностей, всё-таки заэкранировать.
Ты что, экономишь на бэкслэшах?
Ты что, экономишь на бэкслэшах?они ухудшают читаемость
(a?i:qwe) - вот что он имел в виду, почему его функция (в которой этот регэксп) возвращает неправильный ответ?
А если (a?i\:qwe) - то всё понятно, никаких вариантов.
Которые, кстати, ещё и в assertions используются.
Не вижу смысла писать их куда попало.А ещё я, например, всегда, если хочу написать в строке бэкслеш (пусть даже это php-шная строка в одиночных кавычках) - экранирую его, вне зависимости от того, что там написано после этого бэкслеша.
Это плохо?
Конечно, если тебе насрать, насколько читаем твой код, и насрать на тех, кто будет в нём разбираться - твоё дело. Я рад, что я не работаю с тобой.

Жжошь плазмой!жжот, да!

Есть такая прога - RegexBuddy .А под линух такое есть ?
Там есть такая прикольная штука как отображение регэкспов в токенах.
Еще не понял, насколько это полезно, но вполне может помочь лучше разобраться в регэкспе.
А под линух такое есть ?
Его нет, насчет подобного - не знаю.
Одно скажу - чем больше я знакомлюсь с RegexBuddy, тем меньше мне он нравится

Единственное, для чего он действительно неплох - обучение.
В общем я разочаровался и начал писать свой вариант

Оставить комментарий
oyuriyu
Никак не могу записать нормально такой паттерн, постоянно контр-примеры вылазят, на которых он не работает. Как это можно сделать нормально ?Ищется строка такого вида
\s*(слово на русском языке) (разделитель из пробела или других символов типа -, :, — , с обоих сторон ещё и пробелы могут бытьслово на русском языке : (двоеточие возможно окружённое пробелами, может просто пробелы без : цифра, а потом всё что угодно)