.*
in regex basically means "catch everything until the end of input".
So, for simple strings, like hello world
, .*
works perfectly. But if you have a string representing, for example, lines in a file, these lines would be separated by a line separator, such as \n
(newline) on Unix-like systems and \r\n
(carriage return and newline) on Windows.
By default in most regex engines, .
doesn't match newline characters, so the matching stops at the end of each logical line. If you want .
to match really everything, including newlines, you need to enable "dot-matches-all" mode in your regex engine of choice (for example, add re.DOTALL
flag in Python, or /s
in PCRE.