为什么\ w +匹配尾随换行符?

时间:2011-07-08 23:11:38

标签: python regex

我很好奇为什么以下会输出匹配:

import re

foo = 'test\n'
match = re.search('^\w+$', foo)

if match == None:
  print "It did not match"
else:
  print "Match!"

换行符在字符串结尾之前,是吗?为什么这匹配?

2 个答案:

答案 0 :(得分:9)

来自Python的re文档。

  

<强> '$'
  匹配字符串的结尾或在字符串末尾的换行符之前,并且在MULTILINE模式下也匹配换行符。 foo 匹配'foo'和'foobar',而正则表达式 foo $ 仅匹配'foo'。更有趣的是,在'foo1 \ nfoo2 \ n'中搜索 foo。$ 通常匹配'foo2',但在MULTILINE模式下匹配'foo1';在'foo \ n'中搜索单个 $ 会找到两个(空)匹配:一个在换行符之前,一个在换行符结尾。

答案 1 :(得分:8)

^$表示“行首”和“行尾”,而不是“字符串的开头”和“字符串的结尾”。使用\A表示“字符串开头”,使用\Z表示“结束字符串”。