【发布时间】:2011-12-27 09:32:00
【问题描述】:
我有一台运行 Lion 和 Python 2.7.1 的 Mac。我从 re 模块中注意到一些非常奇怪的东西。如果我运行以下行:
print re.split(r'\s*,\s*', 'a, b,\nc, d, e, f, g, h, i, j, k,\nl, m, n, o, p, q, r')
我得到这个结果:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r']
但是如果我像这样使用 re.DOTALL 标志运行它:
print re.split(r'\s*,\s*', 'a, b,\nc, d, e, f, g, h, i, j, k,\nl, m, n, o, p, q, r', re.DOTALL)
然后我得到这个结果:
['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q, r']
请注意,'q, r' 被计为一个匹配而不是两个。
为什么会这样?如果我不在我的模式中使用点,我不明白为什么 re.DOTALL 标志会有所作为。是我做错了什么还是有什么错误?
【问题讨论】:
-
我在几乎任何版本的 Python 上都得到了相同的结果。它按记录工作。阅读文档,调整预期。
标签: python regex python-2.7