Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
Форум программистов > Python: Общие вопросы > Помогите с регулярным выражением |
Автор: kulibinka 29.8.2008, 09:27 | ||||||||
Добрый день. Есть шаблоны вида
Мне нужно вытянуть все классы и дивы для того, чтобы их заменить на свои. Т.е. нужно вытянуть фразы
Для вытягивания нужна правильная регулярка. Ближе всего к правильной эта pattern = r"([\s][class|div]*[\s]*=.*[\s|>]*)" Вот сам код для теста:
Но она ищет не до первого вхождения пробела или > после знака =, а до последнего > (не смотря на [\s|>]*). Т.е. результат такой:
Подскажите пожалуйста правильную регулярку. |
Автор: Daevaorn 29.8.2008, 09:48 |
Дивы? id наверно всё-таки |
Автор: kulibinka 29.8.2008, 10:46 |
Да, class и id ![]() Пока дошел до следующей регулярки: pattern = r"([class|id]+[\s]*=[\s|'|\"]*.*?[\s|'|\"|>]{1})" Почти делает все как надо, только в случаях без кавычек (id=id1) захвачивает > (получается id=id1>) |
Автор: setq 29.8.2008, 23:42 |
Если хочешь сохранить душевное здоровье, никогда не разбирай xmlы regexpами) Попробуй какой-нибудь... ... elementtree (?)... например. |
Автор: kulibinka 30.8.2008, 07:22 |
Я хочу регулярки немножко понять ![]() |
Автор: kulibinka 31.8.2008, 12:05 |
* 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' Гы - пропал пост с этим советом ![]() |
Автор: izekia 26.9.2008, 16:46 |
class\s*=\s*('[^']*'|"[^"]*) для класса id\s*=\s*('[^']*'|"[^"]*|\s*[^ ^>]*) для ид примитивно конечно, но должно работать Добавлено через 1 минуту и 55 секунд setq, а чем разбирать? гарантии что HTML веллформд тебе никто не даст можно конечно парсер под это дело написать, работать будет быстрее чем регулярка |