![]() |
Модераторы: Daevaorn |
![]() ![]() ![]() |
|
kulibinka |
|
||||||||
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Добрый день.
Есть шаблоны вида
Мне нужно вытянуть все классы и дивы для того, чтобы их заменить на свои. Т.е. нужно вытянуть фразы
Для вытягивания нужна правильная регулярка. Ближе всего к правильной эта pattern = r"([\s][class|div]*[\s]*=.*[\s|>]*)" Вот сам код для теста:
Но она ищет не до первого вхождения пробела или > после знака =, а до последнего > (не смотря на [\s|>]*). Т.е. результат такой:
Подскажите пожалуйста правильную регулярку. Это сообщение отредактировал(а) kulibinka - 29.8.2008, 09:27 |
||||||||
|
|||||||||
Daevaorn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 2155 Регистрация: 29.11.2004 Где: Москва Репутация: 9 Всего: 70 |
||||
|
||||
kulibinka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Да, class и id
![]() Пока дошел до следующей регулярки: pattern = r"([class|id]+[\s]*=[\s|'|\"]*.*?[\s|'|\"|>]{1})" Почти делает все как надо, только в случаях без кавычек (id=id1) захвачивает > (получается id=id1>) |
|||
|
||||
setq |
|
|||
Unregistered |
Если хочешь сохранить душевное здоровье, никогда не разбирай xmlы regexpами) Попробуй какой-нибудь... ... elementtree (?)... например.
|
|||
|
||||
kulibinka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
Я хочу регулярки немножко понять
![]() |
|||
|
||||
kulibinka |
|
|||
Бывалый ![]() Профиль Группа: Участник Сообщений: 191 Регистрация: 20.11.2006 Репутация: 2 Всего: 4 |
* r"(class)|(id)\s*=\s*['\"].*\3"
Ошибка: Traceback (most recent call last): File "O:\!!!code\usefull\regular_expression\re\8.2.1.py", line 33, in ? tokens = re.compile(pattern, re.UNICODE|re.I) File "O:\kyxa\server3\usr\local\python\Lib\sre.py", line 180, in compile return _compile(pattern, flags) File "O:\kyxa\server3\usr\local\python\Lib\sre.py", line 227, in _compile raise error, v # invalid expression sre_constants.error: bogus escape: '\\3' Гы - пропал пост с этим советом ![]() Это сообщение отредактировал(а) kulibinka - 31.8.2008, 12:07 |
|||
|
||||
izekia |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 5.12.2007 Репутация: нет Всего: 3 |
class\s*=\s*('[^']*'|"[^"]*)
для класса id\s*=\s*('[^']*'|"[^"]*|\s*[^ ^>]*) для ид примитивно конечно, но должно работать Добавлено через 1 минуту и 55 секунд setq, а чем разбирать? гарантии что HTML веллформд тебе никто не даст можно конечно парсер под это дело написать, работать будет быстрее чем регулярка |
|||
|
||||
![]() ![]() ![]() |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Python: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |