python正则表达式不会忽略行尾的空格

sam*_*bha 3 python regex

前导空格被忽略,但尾随空格不在下面的正则表达式代码中.它只是一个"Name = Value"字符串,但有空格.我认为\s*捕获后会忽略空格.

import re
line = "  Name =  Peppa Pig  "
match = re.search(r"\s*(Name)\s*=\s*(.+)\s*", line)
print(match.groups())
>>>('Name', 'Peppa Pig   ')  # Why extra spaces after Pig!
Run Code Online (Sandbox Code Playgroud)

我错过了什么?

anu*_*ava 8

你因为贪婪的性质而得到了尾随的空间.+.

您可以使用此正则表达式来正确捕获您的值:

>>> re.search(r"\s*(Name)\s*=\s*(.+?)\s*$", line).groups()
('Name', 'Peppa Pig')
Run Code Online (Sandbox Code Playgroud)

\s*$ 确保我们在结尾处追踪空白之前捕获价值.

  • `.+?`使它成为一个懒惰的匹配,而不是贪婪的`.+` (2认同)