In [1]:
import re

In [2]:
s = 'aaa@xxx.com'

In [3]:
m = re.match(r'[a-z]+@[a-z]+\.[a-z]+', s)
print(m)


<re.Match object; span=(0, 11), match='aaa@xxx.com'>

In [4]:
print(type(m))


<class 're.Match'>

In [5]:
print(m.start())


0

In [6]:
print(m.end())


11

In [7]:
print(m.span())


(0, 11)

In [8]:
print(m.group())


aaa@xxx.com

In [9]:
print(type(m.group()))


<class 'str'>

In [10]:
m = re.match(r'([a-z]+)@([a-z]+)\.([a-z]+)', s)
print(m)


<re.Match object; span=(0, 11), match='aaa@xxx.com'>

In [11]:
print(m.groups())


('aaa', 'xxx', 'com')

In [12]:
print(m.group())


aaa@xxx.com

In [13]:
print(m.group(0))


aaa@xxx.com

In [14]:
print(m.group(1))


aaa

In [15]:
print(m.group(2))


xxx

In [16]:
print(m.group(3))


com

In [17]:
# print(m.group(4))
# IndexError: no such group

In [18]:
print(m.group(0, 1, 3))


('aaa@xxx.com', 'aaa', 'com')

In [19]:
print(m.span())


(0, 11)

In [20]:
print(m.span(3))


(8, 11)

In [21]:
# print(m.span(4))
# IndexError: no such group

In [22]:
# print(m.span(0, 1))
# TypeError: span expected at most 1 arguments, got 2

In [23]:
m = re.match(r'(([a-z]+)@([a-z]+)\.([a-z]+))', s)
print(m)


<re.Match object; span=(0, 11), match='aaa@xxx.com'>

In [24]:
print(m.groups())


('aaa@xxx.com', 'aaa', 'xxx', 'com')

In [25]:
m = re.match(r'(?P<local>[a-z]+)@(?P<SLD>[a-z]+)\.(?P<TLD>[a-z]+)', s)
print(m)


<re.Match object; span=(0, 11), match='aaa@xxx.com'>

In [26]:
print(m.group('local'))


aaa

In [27]:
print(m.group('SLD'))


xxx

In [28]:
print(m.group('TLD'))


com

In [29]:
print(m.group(0))


aaa@xxx.com

In [30]:
print(m.group(3))


com

In [31]:
print(m.group(0, 2, 'TLD'))


('aaa@xxx.com', 'xxx', 'com')

In [32]:
print(m.groups())


('aaa', 'xxx', 'com')

In [33]:
print(m.groupdict())


{'local': 'aaa', 'SLD': 'xxx', 'TLD': 'com'}

In [34]:
print(type(m.groupdict()))


<class 'dict'>

In [35]:
print(re.match(r'[a-z]+@[a-z]+\.[a-z]+', s))


<re.Match object; span=(0, 11), match='aaa@xxx.com'>

In [36]:
print(bool(re.match(r'[a-z]+@[a-z]+\.[a-z]+', s)))


True

In [37]:
print(re.match('[0-9]+', s))


None

In [38]:
print(bool(re.match('[0-9]+', s)))


False

In [39]:
if re.match(r'[a-z]+@[a-z]+\.[a-z]+', s):
    print('match')
else:
    print('no match')


match

In [40]:
if re.match('[0-9]+', s):
    print('match')
else:
    print('no match')


no match

In [41]:
m = re.match('[0-9]*', s)
print(m)


<re.Match object; span=(0, 0), match=''>

In [42]:
print(m.group() == '')


True

In [43]:
print(bool(m))


True

In [44]:
if re.match('[0-9]*', s):
    print('match')
else:
    print('no match')


match