![]() |
|
Модераторы: ginnie |
![]()
|
|
| Evghenusi |
|
||||||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
Ребята, может это вам под силу?
как оставить только один атрибут (colspan|rowspan) знаю, а как оба нет исходный текст
получить
Эта задачка задавалась в разделе php, но до сих пор не даёт мне покоя. Кстати вот мой вариант, наверно кривоват, но всё что смог родить:
неужели нельзя решить одним РВ? Это сообщение отредактировал(а) Evghenusi - 3.9.2011, 04:13 |
||||||
|
|||||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
Именно для этой последовательности сгодится такой вариант
|
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
А если имеется html код в котором надо найти только теги <td> и очистить их, тогда как?
И если не трудно объясните пожалуйста работу вашего РВ? слово перед которым нет (colspan|rowspan)="всё кроме кавычки" ? |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
|
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
Огромное спасибо, то что надо!
Буду несказанно рад, если ещё и объясните. |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
alezzz, не работает
Имеем: <td rowspan="3" style="height: 50%">3</td> Ожидалось: <td rowspan="3">3</td> |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
да, как всегда не все варианты опробовал, вобщем одним выражением сложно, легче вытянуть содержимое <td ... > и уже его чистить чем весь html-документ
|
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
||||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
Не стоит отчаиваться.
В предыдущем варианте мне мешал fixed-regexp в просмотре назад, а что если отталкиваться не от начинающего тега, а от завершающего? вобщем если внутри <td > </td> нет других тегов, то можно такое попробовать:
|
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
вроде работает, хотя в отличии от Pfailed, я мог снова что-то упустить)
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
Ну тут сам alezzz сказал в чём проблема его последнего варианта.
В обычном html вероятность нахождения тега внутри <td> весьма велика. Хотя с другой стороны нормальные люди html регулярками не парсят Мне стало интересно можно ли после осуществленной подстановки вернуть позицию в строке на начало этой подстановки. Если найти возможность это сделать, то задача бы легко решилась. Я задал вопрос по этому поводу на perlmonks |
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
И всё таки оно существует, решение этой задачи.
Не идеальное, но вроде как лучшее из представленных. |
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
а зачем сверхжадный квантификатор?
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
Потому что мы знаем, что если захватили слово, но там colspan или rowspan, то нет смысла уменьшать захваченное и пытаться найти "=" после этого.
|
|||
|
||||
| Pfailed |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
Сегодня регулярка немного изменилась
Кстати, в php поддерживаются \K и \G? |
|||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
запутался я, вопрос задавали в разделе JavaScript. В JS выдаёт ошибку "invalid quantifier", либо у меня кривые руки, а в PHP (5.3) срабатывает на ура.
Спасибо за решение, для меня это был больше спортивный интерес.....пойду читать что такое "\K" |
|||
|
||||
| alezzz |
|
||||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
почему-то perlretut не знает про \K, но судя по описанию Pfailed следующие выражения по смыслу одинаковы:
гараздо интереснее \G
незнаю как для JS, в языках в которых нет встроенной поддержки РВ должно быть несколько библиотек для работы РВ. Читал что библиотеки для Java (а может VB, уже не помню) поддерживают любые выражения при просмотре назад. |
||||
|
|||||
| Pfailed |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 933 Регистрация: 19.7.2009 Репутация: 6 Всего: 39 |
Оно работает, но менее эффективно, будет 7 лишних возврата (или около того). Можно добавить в скрипт
и увидеть как работает со сверх жадным и просто жадным. Я посмотрел и понял, что вся регулярка работает неэффективно. Написал еще 1 вариант, который мне больше нравится
В perlre есть и про \K и про \G. Я про них сам только вчера узнал толком, из моей темы с perlmonks. |
||||||
|
|||||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
уже встречал до поднятия этой темы, в отличии от \K
оффтоп а есть онлайн сервис где это можно наблюдать?, а то за перл ещё не скоро возьмусь Это сообщение отредактировал(а) Evghenusi - 4.9.2011, 16:55 |
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
||||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
alezzz, я привык что для пхп надо Дэнвер (к примеру) запускать, ну или если что-то мелкое то проверить на http://codepad.org/ , но там надо вписать кроме кода <?php ... ?> , а как работать с перл я не в зуб ногой, поэтому и спросил про онлайн сервис.
http://codepad.org/BKjp6kyr больше ничего не надо? |
|||
|
||||
| dixoNICH |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 222 Регистрация: 20.3.2011 Репутация: нет Всего: нет |
ideone.com
|
|||
|
||||
| alezzz |
|
|||
![]() сплю... ![]() ![]() Профиль Группа: Участник Сообщений: 499 Регистрация: 17.8.2009 Репутация: 11 Всего: 14 |
||||
|
||||
| Evghenusi |
|
|||
![]() майский жук ![]() ![]() Профиль Группа: Участник Сообщений: 506 Регистрация: 3.8.2006 Где: Молдова, Кишинёв Репутация: нет Всего: 15 |
||||
|
||||
![]()
|
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Perl: Регулярные выражения | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |