Методы объектов класса 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; Мы поможем в написании вашей работы!

Поделиться с друзьями:






Мы поможем в написании ваших работ!