|
ru.perl- RU.PERL ---------------------------------------------------------------------- From : Artem Chuprina 2:5020/371.32 07 Sep 2001 12:32:43 To : Yuriy Kaminskiy Subject : Re: simple regexp -------------------------------------------------------------------------------- TVI>> должна быть разделена на поля: 11, 22, 33, 44. Hе получается, блин :( AC>> ... TVI>> Причем, если заменить (@|#) на [@#] - все проходит на ура... AC>> Hу и замени. Заодно будет существенно быстрее работать. YK>> Вопрос только в том, что делать, когда (...) _действительно_ YK>> необходимо (f.e. для \1; т.е. (?:...) не подходит). AC>> ([@#]). Ты не путай группирование для backreference с группированием для AC>> альтернативы. YK> Я ничего не путаю. Это ты вопрос не понял :) Ладно, на примере разжую: YK> Есть @res = split(/([#@])\1/,"aa##bb#@cc"). YK> Хочу получить qw/aa bb#@cc/; YK> Получаю qw/aa # bb#@cc/; YK> Теперь понятно? До некоторой степени. perldoc -f split на предмет того, как он пользуется backreferences. А то, чего тебе хотелось, если я правильно ошибаюсь, делается split(/##|@@/,"aa##bb#@cc") Просто изначальный вопрос ставился, сколь я помню, как "два любых символа из # и @", что соответствует [#@]{2}. А "два одинаковых из" - это, извините, ##|@@. Если же у тебя будет задача, которая действительно требует backreference в разделителе, то надо либо не пользоваться split, либо брать из результата только четные элементы. -- Artem Chuprina <ran@ran.pp.ru> FIDO: 2:5020/371.32 --- slrn/0.9.7.0 (Linux) * Origin: AKA с подствольным плюсомётом (2:5020/371.32) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.perl/691892fd56804.html, оценка из 5, голосов 10
|