re.A | re.ASCII Perform ASCII-only matching instead of full Unicode matching
re.I | re.IGNORECASE Perform case-insensitive matching
re.M | re.MULTILINE ^ matches the pattern at beginning of the string and each newline’s beginning (
).
$ matches pattern at the end of the string and the end of each new line (
)
re.S | re.DOTALL Without this flag, DOT(.) will match anything except a newline
re.X | re.VERBOSE Allow comment in the regex
re.L | re.LOCALE Perform case-insensitive matching dependent on the current locale. Use only with bytes patterns
import re
target_str = "Joy lucky number is 75
Tom lucky number is 25"
# find 3-letter word at the start of each newline
# Without re.M or re.MULTILINE flag
result = re.findall(r"^w{3}", target_str)
print(result)
# Output ['Joy']
# find 2-digit at the end of each newline
# Without re.M or re.MULTILINE flag
result = re.findall(r"d{2}$", target_str)
print(result)
# Output ['25']
# With re.M or re.MULTILINE
# find 3-letter word at the start of each newline
result = re.findall(r"^w{3}", target_str, re.MULTILINE)
print(result)
# Output ['Joy', 'Tom']
# With re.M
# find 2-digit number at the end of each newline
result = re.findall(r"d{2}$", target_str, re.M)
print(result)
# Output ['75', '25']