Методы объектов класса RegexpObject
Объекты регулярных выражений (экземпляры класса RegexpObject) возвращает функция compile () модуля re в результате компиляции регулярных выражений, заданных в виде шаблона-строки (см. подраздел 2.1 ):
>>> import re
>>> p=re.compile( 'ab*' ).
Объекты класса RegexpObject имеют следующие методы:
· search (string[, pos[, endpos]]) – осуществляет поиск вдоль строки string, определяя местоположение подстроки, совпадающей с РВ, и в случае совпадения возвращает соответствующий экземпляр класса MatchObject. Если такое место в строке не найдено – возвращает значение None. Отметим, что это не одно и то же, что найти в некотором месте строки сравнение нулевой длины.
Необязательный параметр pos задает позицию в строке, где начинается поиск. Это не полностью эквивалентно использованию метоасимвола "^", который указывает и на начало строки, и на начало каждой части строки, начинающейся символом новой строки.
Необязательный параметр endpos задает границу поиска в строке (могут сравниваться только символы с индексами не больше endpos - 1). Если endpos меньше pos – сравнение не будет осуществляться:
>>> p.search ( 'the absolute' )
< _sre.SRE_Match object; span=(4, 6), match='ab'> ;
· match (string[, pos[, endpos]]) – если нуль или более символов строки string совпадают с РВ, возвращает соответствующий экземпляр класса MatchObject. В противном случае возвращает значение None. Необязательные параметры pos и endpos имеют те же назначение, что и для метода search():
>>> p.match ( 'abba' )
< _sre.SRE_Match object; span=(0, 3), match='abb'> .
|
|
Если подстрока не найдена – возвращается значение None:
>>> print (p.match( ''Abba'' ))
None ;
Если подстрока не начинается с начала строки, она не находится:
>>> if not p.match ( ' abba'' ): print ( 'Подстрока не найдена' )
Подстрока не найдена ,
В этом случае необходимо использовать метод search();
· split (string[, maxsplit=0]) – идентичен функции split() модуля re, но использует скомпилированное РВ в виде объекта класса RegexpObject;
· findall (string[, pos[, endpos]]) – идентичен функции findall() модуля re, но использует скомпилированное РВ в виде объекта класса RegexpObject. Также может принимать необязательные параметры pos и endpos, для задания диапазона поиска подобно методу match() :
>>> p.findall ( ''"abba\'s" music - abcolute'' )
['abb', 'a', 'ab'] ;
· finditer (string[, pos[, endpos]]) – идентичен функции finditer() модуля re, но использует скомпилированное РВ в виде объекта класса RegexpObject. Также может принимать необязательные параметры pos и endpos, для задания диапазона поиска подобно методу match();
· sub (repl, string[, count=0]) – идентичен функции sub() модуля re, но использует скомпилированное РВ в виде объекта класса RegexpObject;
· subn (repl, string[, count=0]) – идентичен функции subn() модуля re, но использует скомпилированное РВ в виде объекта класса RegexpObject.
Оглавление
Методы объектов класса MatchObject
|
|
Функции search () и match () модуля re, а также методы search () и match () объектов класса RegexpObject при успешном поиске возвращают значения в виде объектов класса MatchObject:
>>> r=p.match( 'abba' )
>>> r
< _sre.SRE_Match object; span=(0, 3), match='abb'>.
В противном случае возвращаеют значение None:
>>> print (p.match( 'cat' )
None .
Объекты класса MatchObject имеют следующие методы:
· group ([group1, ...]) – возвращает одну или больше найденных групп (см. подраздел 2.4). Если аргументы не заданы, принимается значение по умолчанию – нуль, в этом случае возращается вся найденная подстрока:
>>> r.group ()
'abb' ;
Если указан единственный аргумент, результатом будет единственная строка. Если указано несколько аргументов, результатом будет кортеж, каждый элемент которого задает одну строку:
>>> m=re.match( r"(\w+)\s(\w+)" , "Isaac Newton, physicist" )
>>> m.group ()
'Isaac Newton' ;
>>> m.group (1)
'Isaac' ;
>>> m.group (2)
'Newton' ;
>>> m.group (1, 2)
('Isaac', 'Newton') ;
· groups ([defaults]) – возвращает кортеж, содержащий все сравненные группы. Значение по умолчанию (None) указывается для тех групп, для которых не произошло сравнение:
>>> m=re.match( r"(\d+)\.(\d+)" , "25.341" )
>>> m.groups ()
('25', '341') ;
· groupdict ([default]) – возвращает словарь, содержащий все именованные группы (см. подраздел 2.4), ключами которого являются имена этих групп. Аргумент по умоляанию (None) используется для тех групп, которые не принимали участие в сравнении.
|
|
· start ([group])
end([group]) – возвращают начальный и конечный индексы найденной подстроки:
>>> r.start ()
0;
>>> r.end ()
3;
· span ([group]) – возвращает кортеж, содержащий позицию (start,end) подстроки :
>>> r.span ()
(0,3).
Метод span() можно также использовать для просмотра позиций найленных подстрок итератора, полученного методом p.finditer ():
>>> ite=p.finditer( '"abba\'s" music - abcolute ' )
>>> ite
< callable_iterator object at 0x02308EB0>
>>> for m in ite: print (m.span())
(1, 4)
(4, 5)
(17, 19)
Оглавление
Дата добавления: 2021-11-30; просмотров: 21; Мы поможем в написании вашей работы! |
Мы поможем в написании ваших работ!