Программирование > Регулярные выражения
Вырезка текста
Yukko:
--- Цитировать ---metton:
что метасимвол \'?\' здесь излишен?
--- Конец цитаты ---
лишний!
Phoinix:
Может и лишний, но хуже от него не становится...
После доработки пришел к такому решению:
$text =~s /.*\\[s\\:\\s*(([1-2A-Za-zА-Яа-яё\\d]+)|([A-Za-zА-Яа-яё\\d]+[A-Za-zА-Яа-яё\\s\\d]+[A-Za-zА-Яа-яё\\d]+))\\s*\\](.*?)|(.*\\n?)/$1/gi;
Вот только меня группа [А-Яа-яё] смущает... никто не знает как она выглядит в HEX формате?
metton:
2Phoinix
Просто из любопытсва: а как у тебя с первоначальным выражением $text получился равным \'Some text 2\'?
PS: зря ты всё-таки не слушаешь совета (убрать \'?\'). Этот метасимвол здесь воообще ни на чо не влияет - так зачем лишний символ и лишняя работа парсеру?
Phoinix:
metton
сложно сказать, но одно время работало... проверять не стал, т.к. перешел на второй вариант, но он тоже не подошел... т.к. в тексте может еще сущестовать символы ]
Мало того, я еще думаю в начале поставить ^ - что бы было понятно.
IMHO это не лишняя работа парсеру, а ограничивание вариантов для парсера
metton:
2Phoinix
Понимаешь, в данном контексте ((.*?)) метасимвол \'?\' ничего не ограничивает. Он означает ноль или один символ (предшествующий ему), а метасивол \'*\' означает ноль или более симолов. Следовательно, \'?\' не играет в данном контексте НИКАКОЙ РОЛИ!
Навигация
Перейти к полной версии