0

I am trying to understand how '$' works in the re module of python 3.6.

The python documentation says,'$' Matches the end of the string or just before the newline at the end of the string..., which I do not completely understand.

Could you please give me a few basic examples of $'s functionality inre.match?

Komal
  • 3
  • 3

1 Answers1

0

The $ character always matches the end of the input string.

In Multi-line mode (e.g. when re.M is passed as a flag to one of the re functions), it also matches the end of each line of a multiple line input, just before the newline character.

You want an example with re.match:

some_string = "foo bar baz"
if re.match("foo.*baz$", some_string):
    print("Starts with foo and ends with baz") # this will be printed

The $ character in the pattern here ensures that the baz that gets matched occurs right at the end of the input string. That pattern wouldn't match a string like "foo baz bar", since even though baz occurs, it isn't at the end of the input.

It's not usually useful to call re.match with the multi-line flag set. Instead, you'd more commonly do that with something like re.findall:

multi_line_string = """
foo
bar
foobar
barrel"""

for match in re.findall("^bar$", re.M):
    print("bar is whole line") # this will get printed only once

The ^ and $ characters in the pattern given to re.findall make sure that bar is the whole contents of the line that gets matched. Without them, foobar and barrel would also match.

Blckknght
  • 100,903
  • 11
  • 120
  • 169