regex python разбить

Помогите пожалуйста разобраться, с регулярным выражением на python3

`\s0\s|\d{5}|\d\s?\d+\s\d{3}`

регулярка не может увидеть числа выделенные жирным шрифтом. Мне надо разбить цифры на 3 группы.

Смысл групп заключается в следующем

    1. 3цифры 3цифры (6 символов, пример 494 870 )
    1. 1цифра 3цифры 3цифры (7 символов 7 771 007)
    1. 4цифры 3 цифры (7 символов 1994 450)
    1. 5 цифр (23566, 30 773)
    1. 0 надо всегда читать отдельно и в начале и в середине и в конце, смог сделать только в начале а второй ноль не цепляет отдельно.



494 870 427 273 344 980',
265 680 123 855 167 728',
191 339 449 948 624 938',
227 801 258 836 259 491',
7 771 007 6 628 770 6 753 741',
9 337 358 8 111 380 8 435 255',
3 602 396 1994 450 2370 625',
7530 040 6 383 292 6 567 057',
7032 611 6 181 052 6 416 880',
2854 194 3662 190 3501 212',
23566 39 439 43 890',
30 773 26 133 27 671',
156 560 74 784 75 941',
0 0 74431',
0 56 823 52 626',
18 478 4208 18 787',
8 769 5 186 6653',

Вот ссылка: [https://regex101.com/r/T0LjBe/1][1]

Благодарен за любую помощь, Спасибо!!!


Ответы (1 шт):

Автор решения: Wiktor Stribiżew

Вы можете использовать

\b(?:0|\d{6}\s\d|(?:\d\s?)?\d+\s\d{3}|\d+)\b

См. пример работы регулярного выражения.

Подробности

  • \b - граница слова (сразу перед текущей позицией не должно быть буквы, цифры или знака _
  • (?: - начало незахватывающей подмаски, используемой для того, чтобы границы слова были применимы ко всем шаблоном, перечисленным ниже
    • 0| - ноль или
    • \d{6}\s\d| - шесть цифр (\d{6}), пробельный символ (\s), одна цифра (\d) или (|)
    • (?:\d\s?)?\d+\s\d{3}| - опциональная последовательность из одной цифры и необязательного пробельного символа ((?:\d\s)?), 1 и более цифр (\d+), пробельный символ и три цифры (\d{3}) или
    • \d+ - 1 и более цифр
  • ) - конец незахватывающей подмаски
  • \b - граница слова (сразу после текущей позиции не должно быть буквы, цифры или знака _.
→ Ссылка