Я использую следующее регулярное выражение для сопоставления содержимого любого сценария сценария данных, ссылающегося на указанный c UDF:
\[?shared3\]?\.\[?stringsum\]?(((?'Open'\()[^()]*)+((?'Close-Open'\))[^()]*)+)*
, который соответствует любому экземпляру:
Shared3.StringSum(<some contents here>)
Используя группы балансировки, я пытаюсь также поддерживать такие случаи, как:
Shared3.StringSum(SomeOtherMethod('input') + AnotherMethod('input'))
Однако у меня возникают проблемы, когда ввод имеет вид:
Shared3.StringSum(SomeOtherMethod('input') + AnotherMethod('input')) + ThirdMethod('input')
В В последнем случае мое регулярное выражение также соответствует части ThirdMethod('input')
.
Можно ли каким-либо образом изменить свое регулярное выражение, чтобы оно перестало совпадать, как только "количество скобок" станет равным 0?