Если вы хотите сделать это с помощью регулярного выражения, вы должны указать константу.Это обобщенное регулярное выражение:
^\d+(,\d){n-1}(;\d+(,\d){n-1})*$
Где n-1
- ваша постоянная вычитающая 1 (в приведенном выше примере n-1
= 2
). См. Демонстрацию .
Вместо этого всегда работает итерационный метод:
def my_match(s) :
k = None
for arr in s.split(";") :
length = len(arr.split(","))
if k :
if k != length : return False
else :
k = length
return True
input = "1,2,3;45,25,65;4,2,78" # we assume that the input synthax is correct
print my_match(input)
Если вы не предполагаете, что входной синтакс является правильным, используйте сначала ТимРегулярное выражение Бигелейзена (что-то вроде ^\d+(,\d)*(;\d+(,\d)*)*$
) для проверки, а затем метод, описанный выше.