Я пытаюсь создать регулярное выражение, соответствующее подмножеству синтаксиса расширенного индексирования Python для многомерных массивов.
Пока у меня есть следующее:
^[_a-zA-Z]\w*\s*\[\s*\[(\s*[-+]?\s*[1-9][0-9]*\s*,\s*)*\]\s*\]$
Это регулярное выражение может соответствоватьуспешно следующее:
a[[10,]]
a[[+10,-10,20,]]
a [ [ + 10 , - 10 , 20 , ] ]
a[[]]
Однако завершающая запятая в списках Python является необязательной и не требуется.К сожалению, мое регулярное выражение не может проверить следующее:
a[[10]]
a[[10,10]]
Обратите внимание на пропущенную запятую в конце внутренних скобок.Если я добавлю ?
рядом с ,
моего шаблона регулярных выражений, то приведенный выше шаблон будет проверен.Однако тогда регулярное выражение также проверяет элементы, которые являются числовыми выражениями (например,: a[[10+10,10]]
), что нежелательно.
По сути, я хочу иметь список целых чисел во внутренних квадратных скобках, разделенных запятыми и допускать запятую.Кроме того, эти номера могут иметь префикс -
или +
.
Может ли кто-нибудь предоставить мне решение, которое подтверждает шаблон, описанный выше?
Спасибо.