The difference only becomes apparent when you use the re.M
or re.MULTILINE
multiline flag:
>>> re.search(r'^word', 'Line one
word on line two
', flags=re.M)
<_sre.SRE_Match object at 0x10124f578>
>>> re.search(r'Aword', 'Line one
word on line two
', flags=re.M) is None
True
where ^
matched at the start of a line (following a newline). $
matches at the end of a line:
>>> re.search(r'word$', 'Line one word
Line two
', flags=re.M)
<_sre.SRE_Match object at 0x10123e1d0>
>>> re.search(r'word', 'Line one word
Line two
', flags=re.M) is None
True
From the documentation:
re.M
re.MULTILINE
When specified, the pattern character '^'
matches at the beginning of the string and at the beginning of each line (immediately following each newline); and the pattern character '$'
matches at the end of the string and at the end of each line (immediately preceding each newline). By default, '^'
matches only at the beginning of the string, and '$'
only at the end of the string and immediately before the newline (if any) at the end of the string.
A
always matches at the start of the string regardless,
always at the end.
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…