前导空格被忽略,但尾随空格不在下面的正则表达式代码中。它只是一个 "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!
我错过了什么?
最佳答案
由于 .+
的贪婪性质,您会得到尾随空格。
您可以使用此正则表达式来正确捕获您的值:
>>> re.search(r"\s*(Name)\s*=\s*(.+?)\s*$", line).groups()
('Name', 'Peppa Pig')
\s*$
确保我们在末尾的尾随空格之前捕获值。
关于python - python正则表达式不会忽略行尾的空格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39153613/