Some notes on Python regular expressions.
Use re in if statement
#
Given the following code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
import re
import io
from pprint import pformat
FILEHANDLE = io.StringIO("""
Lorem ipsum dolor sit amet, consectetur
adipiscing elit, sed do eiusmod tempor
incididunt ut labore et dolore magna aliqua. Ut
enim ad minim veniam, quis nostrud exercitation
ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in
reprehenderit in voluptate velit esse cillum
dolore eu fugiat nulla pariatur. Excepteur sint
occaecat cupidatat non proident, sunt in culpa
qui officia deserunt mollit anim id est laborum
""")
PATTERN = re.compile(r"^(.*?)\s+ut\s+(.*)$")
def confess(description, content):
data = pformat(content, width=200)
substr = " = "
for line in data.split("\n"):
print(f"{description}{substr}{line}")
description = " " * (len(description) + 1)
substr = " "
|
if not using the matches later
#
1
2
3
|
for line in FILEHANDLE.readlines():
if PATTERN.match(line):
confess("line ", line)
|
Output:
line = 'incididunt ut labore et dolore magna aliqua. Ut\n'
line = 'ullamco laboris nisi ut aliquip ex ea commodo\n'
ref
If using the results later
#
1
2
3
4
5
6
7
8
|
for line in FILEHANDLE.readlines():
match = PATTERN.match(line)
if match is not None:
confess("line ", line)
confess("match(0)", match.group(0))
confess("match(1)", match.group(1))
confess("match(2)", match.group(2))
print()
|
Output:
line = 'incididunt ut labore et dolore magna aliqua. Ut\n'
match(0) = 'incididunt ut labore et dolore magna aliqua. Ut'
match(1) = 'incididunt'
match(2) = 'labore et dolore magna aliqua. Ut'
line = 'ullamco laboris nisi ut aliquip ex ea commodo\n'
match(0) = 'ullamco laboris nisi ut aliquip ex ea commodo'
match(1) = 'ullamco laboris nisi'
match(2) = 'aliquip ex ea commodo'