Форум → Программирование → PHP для идиотов → Народ, помогите с regexp - найти ячейку с нужным текстом!
Народ, помогите с regexp - найти ячейку с нужным текстом!
-
Проще говоря, есть несколько элементов с известными границами <td> и </td>
<td>….</td>
<td>…..XXX….</td>
<td>……</td>
нужно найти именно тот элемент, который содержит XXX. Кол-во символов внутри элемента и позиция ХХХ неизвестна.
пробовал:
<td>.*XXX.*</td>
берет от самого первого в тексте <td> до второй границы нужной ячейки.
<td>..XXX.+?</td>
получается, только если известно, что между первой границей элемента и XXX именно 2 символа. А где именно находится ХХХ в элементе, заранее неизвестно. -
30 апреля 2009 г. 12:17, спустя 1 час 2 минуты 54 секунды
<td>.*XXX.*</td>
если ввести условия на html, можно привести к удобной регулярке:<td>[^<]*?XXX.*?</td>
-
30 апреля 2009 г. 12:29, спустя 11 минут 54 секунды
Огромное спасибо!
Но все равно вопрос - почему не работают ленивые квантификаторы, выбирающие как можно меньше символов ?
Ведь минимальное кол-во символов - это именно <td>12XXX, а не <td>12</td>34<td>56</td>78XX ? -
30 апреля 2009 г. 12:30, спустя 46 секунд
потмоу что ты совсем не понимаешь как они работают.
Огромное спасибо!
Но все равно вопрос - почему не работают ленивые квантификаторы, выбирающие как можно меньше символов ?
Ведь минимальное кол-во символов - это именно <td>12XXX, а не <td>12</td>34<td>56</td>78XX ?Сапожник без сапог -
-
30 апреля 2009 г. 12:39, спустя 58 секунд
Дорогой гугль, объясни мне как работают регулярные выражения
Можно подробнее ?Сапожник без сапог -
30 апреля 2009 г. 12:41, спустя 2 минуты 37 секунд
Огромное спасибо!
Но все равно вопрос - почему не работают ленивые квантификаторы, выбирающие как можно меньше символов ?
Ведь минимальное кол-во символов - это именно <td>12XXX, а не <td>12</td>34<td>56</td>78XX ?
он нашел первый тд, затем ищет закрывающий, отстоящий на минимальную подстроку. -
30 апреля 2009 г. 12:57, спустя 15 минут 55 секунд
Огромное спасибо!
Но все равно вопрос - почему не работают ленивые квантификаторы, выбирающие как можно меньше символов ?
Ведь минимальное кол-во символов - это именно <td>12XXX, а не <td>12</td>34<td>56</td>78XX ?
он нашел первый тд, затем ищет закрывающий, отстоящий на минимальную подстроку.
в подстроке внутри тегов есть еще ХХХ - это главное условие.
Т.е. алгоритм
1. Найти такой <td>, после которого на минимальном расстоянии следует ХХХ, после которого, в свою очередь, на минимальном расстоянии следует </td>
Если я после XXX вместо .*? ставлю жадный .*, то он заберет строку после ХХХ до последней </td> в тексте. То есть в этом случае жадность работает.
Он назад после обнаружения ХХХ не может пересмотреть и сократить найденный отрезок от <td> до ХХХ ?
-
30 апреля 2009 г. 15:44, спустя 2 часа 47 минут 14 секунд
Pasha_Moscow, ну напиши свой автомат, забив на регулярки
Пожалуйста, авторизуйтесь, чтобы написать комментарий!