Я пытаюсь придумать регулярное выражение в Python, которое должно соответствовать любому символу, но избегать трех или более последовательных запятых или точек с запятой.Другими словами, допускается только до двух последовательных запятых или точек с запятой.
Итак, вот что у меня в данный момент есть:
^(,|;){,2}([^,;]+(,|;){,2})*$
И, похоже, работает как ожидалось:1007 *
Но когда я начинаю увеличивать длину вводимого текста, регулярному выражению, похоже, требуется гораздо больше времени, чтобы дать ответ.
>>> r.match('foo, bar, baz,, foo')
<_sre.SRE_Match object at 0x7f23af8407e8>
>>> r.match('foo, bar, baz,, fooooo, baaaaar')
<_sre.SRE_Match object at 0x7f23af840750>
>>> r.match('foo, bar, baz,, fooooo, baaaaar,')
<_sre.SRE_Match object at 0x7f23af8407e8>
>>> r.match('foo, bar, baz,, fooooo, baaaaar,,')
<_sre.SRE_Match object at 0x7f23af840750>
>>> r.match('foo, bar, baz,, fooooo, baaaaar,,,')
>>> r.match('foo, bar, baz,, fooooo, baaaaar,,,,')
>>> r.match('foo, bar, baz,, fooooo, baaaaar, baaaaaaz,,,,')
И, наконец, он полностью застревает на этом этапе изагрузка процессора возрастает до 100%.
Я не уверен, можно ли оптимизировать регулярное выражение или что-то еще, любая помощь приветствуется.