захват повторяющихся групп только в регулярном выражении - PullRequest
2 голосов
/ 30 сентября 2019

Я хотел бы захватить все строки с шаблонами:

1234 2345 2345 6754

1234 2312

2345 4567 2345

, то есть только группы из 4 цифр.

Я попробовал выражение

((\d\d\d\d\s*)+?) 

, ноон также захватывает строки с группой из 4 цифр. Т.е.

1234 asdf 1232 2345 
or 

1234 231 2345

Могу ли я узнать, какие изменения следует внести в мое текущее выражение?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 сентября 2019

Для сопоставления строк, содержащих только 4-значные последовательности (разделенные пробелами):

^\s*(\d{4}\b\s*)+$

https://regex101.com/r/30kEH6/1

0 голосов
/ 30 сентября 2019
import re

text = "1234 5678 9101"
print(re.match(r'^\s*(\d{4}(\s+|\Z))+$', text))
  1. ^ Соответствует началу строки.
  2. `\ s * 'Соответствует 0 или более пробелам.
  3. (\d{4}(\s+|\Z))+ Соответствует 4 цифрам послелибо на один или несколько пробелов, либо на конец строки, все повторяются один или несколько раз.
  4. $ Соответствует концу строки.

См. демонстрацию

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...