2015-03-03 2 views
2

Я пытаюсь сделать регулярное выражение для recongise сложной декларации сценария, такие как:Регулятор заголовка регулярного выражения?

script void bar(type foo, type baz) 

Где как «тип» 's находятся в одной и той же захвата группы

В настоящее время, у меня есть Regex:

(script)\s(\w*)\s(\w*)\((?:([a-z|A-Z]+)\s\w+)?\) 

Это распознает группы захвата, как показано на ссылке. https://regex101.com/r/nB3oL3/3

  1. [0-6] script
  2. [7-11] void
  3. [12-15] bar
  4. [16-20] type

Он также признает строки

script void bar(type foo) 
script void bar() 

Какой именно то, что я хочу, за исключением того, что он не признает каких-либо дополнительных параметров, таких как «типа» Баз

script void bar(type foo, type baz) 

Я изо всех сил, чтобы выработать способ рекурсивного распознавания «тип», за исключением в

", type baz"
дополнение без добавления дополнительных групп захвата (если это возможно?). Я также был уверен, что мне нужно использовать сброс ветвей для этого эффекта?

Как я делаю это для возвышенного, я полагаю, что он должен использовать механизм регулярного выражения python.

Любая помощь будет очень полезна!

  • Chris
+0

** Быстрое примечание - только что заметил, что это только признает строчный регистр, это было не мое намерение, но легко фиксируемое ** – Chris

ответ

1

В двигателе, который поддерживает рекурсивные регулярные выражения, ^(script)\s(\w+)\s(\w+)\((?:([a-zA-Z]+)\s\w+(?:,\s)?)*\)$ должен работать, но взятые из this должности, рекурсивные реализации не широко реализуется. (В качестве комментария к этому состоянию существуют, например, плагины для python для поддержки этого.)

+0

Это хорошо, но, кажется, только фиксирует последний введенный тип – Chris

+0

'script void bar (тип foo,' ** type ** 'baz)', а не оба из них - или это веб-сайт - пример отсутствия поддержки рекурсивного регулярного выражения? – Chris

+0

Из того, что я мог сделать, веб-сайт является примером отсутствия поддержки, как только я получу шанс, я установлю плагин python и попробую прямо в интерпретаторе. –

Смежные вопросы