Ярлыки

.htaccess (4) тестирование (8) шаблоны проектирования (3) css (5) Debian (6) docker (2) Doctrine2 (6) Git (6) html (4) java (6) javascript (13) jquery (11) LFS (3) linux (23) mac os (4) mod_rewrite (2) MSSQL (4) MySQL (18) ORM Doctrine (17) patterns (3) PDO (3) perl (7) PHP (64) PHPUnit (8) Python (15) SEO (2) Silex (1) SimpleXML (1) SQL (14) ssh (4) Ubuntu (24) Yii1 (1) Zend Framework (19) ZendFramework2 (8)

вторник, 22 марта 2011 г.

Python. Регулярные выражения. Нежадный поиск с учетом служебных символов.

html = '<div><span>hello</span><span>goodbay</span></div>'

# (?=...) - соотв, если ... соотв тому, что идет следом, но не включает ...
# (?<=...) - соотв, если ... предшествует искомой позиции, но не включает ...
# .*? - нежадный поиск, произвольная последовательность символов
# re.DOTALL - включить в поиск служебные символы (перенос строк, пробелы и тд)

match = re.search('(?<=<span>).*?(?=</span>)', html, re.DOTALL).group(0)
print match
'hello'
Поиск в строке с кодировкой utf-8
m = re.search('some string'.decode('utf-8'), 'some string and something else'.decode('utf-8'), re.UNICODE|re.IGNORECASE)

Комментариев нет:

Отправить комментарий