Не сте принудени да създавате RegexObject и да викате методите му.
Модулът re предоставя и функции от най-високо ниво, наречени
match(), search(), sub(), и прочие. Тези
функции взимат същите аргументи като съответните методи на
RegexObject, само че със символния низ на РИ, прибавен като първи
аргумент. Те също така връщат или None
или инстанция на
MatchObject.
>>> print re.match(r'From\s+', 'Fromage amk') None >>> re.match(r'From\s+', 'From amk Thu May 14 19:12:10 1998') <re.MatchObject instance at 80c5978>
Трябва ли да използвате функциите на ниво модул, или трябва да получите RegexObject и сам да викате методите му? Изборът зависи от това колко често ще бъде използван даден РИ и от вашия личен стил на кодиране. Ако даден РИ се използва само на едно място в кода, тогава функциите на модула може би са по-удачни. Ако пък програмата съдържа много регулярни изрази, или преизползва едни и същи на няколко места, тогава може да се окаже подходящо всички дефиниции да се съберат на едно място, обособени в група код, където предварително се компилират всички РИ. За да вземем пример от стандартната библиотека, ето един фрагмент от xmllib.py:
ref = re.compile( ... ) entityref = re.compile( ... ) charref = re.compile( ... ) starttagopen = re.compile( ... )