[Perl] Регулярные выражения - повторяющиеся подстроки
Он схватит все простые таблицыНе угадал. Он схаватит только первую таблицу в тексте.
Ботай флаг g.
[xenon ~]$ perl -ne '/<table><tr><td>(.*?)<\/td>)*?)<\/tr>)*?)<\/table>/ and print "$1,$2,$3,$4,$5\n"';
<table><tr><td>text</td></tr></table><table><tr><td>xxx</td></tr></table>
<tr><td>text</td></tr>,<tr><td>text</td></tr>,<td>text</td>,<td>text</td>,text
Чего не так то?
s/...../process($2);""/ge
Честно говоря, мне это надо не для команды perl, а для php-шной функции preg_replace...
![](/images/graemlins/laugh.gif)
Не угадал. Он схаватит только первую таблицу в тексте.В preg_replace по умолчанию ищутся (и заменяются) все вождения, подпадающие под шаблон.
Ботай флаг g.
Всё-таки, как можно узнать первую строку? Или первую ячейку?
Как всё-таки из строки, содержащей такую "упрощённую" хтмл-таблицу, выцепить содержимое ячейки - не последней, а конкретной?
Где тогда можно достать максимально понятное руководство по регулярным выражениям ereg_replace?
О preg_replace - искал на perl.org - там всё достаточно понятно, но вот о таких вещах не нашёл ни слова...
![](/images/graemlins/smile.gif)
![](/images/graemlins/laugh.gif)
PS. почему бы тебе не понавставлять в твой регексп \s* кругом, а то многие таблицы не поматчатся...
PS: тут я написал максимально упрощённый вариант... чтобы не возникало лишних вопросов...
Поботал, того, что надо, не нашёл... можно поконкретнее?
![](/images/graemlins/grin.gif)
А конкретнее?
![](/images/graemlins/grin.gif)
вообще то это шутка!
![](/images/graemlins/grin.gif)
Пока что - какое-то решение есть (спасибо но хотелось бы всё-таки сделать это с использованием только одного preg_replace...
10 простых команд работают быстрее одного сложного регекспа.
Не такие уж они и простые получились...
ну а че ты хочешь, в твоем случае надо самому придумывать.
Оставить комментарий
kruzer25
Допустим, есть паттерн типа:Он схватит все простые таблицы в тексте (где у table,tr,td нет никаких параметров, между ними нет никаких пробелов и т.д.)
А как теперь получить, например, содержимое первой строки (tr)? \${2} возвращает последнее соответствие - последнюю строку... есть ли что-нибудь типа \${2}{1} ?