Ошибка с функцией re.split и флагом re.DOTALL в модуле re в Python 2.7.1

У меня есть Mac с Lion и Python 2.7.1. Я заметил что-то очень странное в модуле 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 будет иметь значение, если я не использую точки в своем шаблоне. Я делаю что-то не так или есть какая-то ошибка?

7
задан Elias Zamaria 11 November 2011 в 22:31
поделиться