RegEx — сопоставление имен параметров функций

var str:String = "myFunction(strParam:String = \"myFunc()\", objParam:Object = {x:50, y:50}):void";

я хотел бы сопоставить имена параметров из функции в приведенной выше строке: strParam, objParam.

попытка сопоставить эти имена параметров как слова перед двоеточием в круглых скобках не удалась. проблемы возникают при использовании логики просмотра / моей логики, так как могут быть внутренние круглые скобки и свойства объекта с двоеточиями, как показано в приведенной выше строке.

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


person Chunky Chunk    schedule 29.05.2011    source источник
comment
Вы хотите сопоставить объявление какой-либо универсальной функции? Или только один, как выше?   -  person poke    schedule 30.05.2011
comment
любой. выше это просто пример.   -  person Chunky Chunk    schedule 30.05.2011
comment
Тогда вам следует искать парсер. Регулярные выражения не могут сделать это хорошо.   -  person poke    schedule 30.05.2011
comment
в порядке. вот что я сделаю. благодаря.   -  person Chunky Chunk    schedule 30.05.2011


Ответы (2)


Попробуйте сначала удалить строки с внутренними скобками.

str.replace(/{.*?}/, "");

тогда вы можете сопоставлять на основе двоеточий. Или, если этого недостаточно, попробуйте еще больше сократить его, удалив ненужную информацию.

person Máthé Endre-Botond    schedule 29.05.2011

Немного намудрено, с использованием рубуляра.

\(.*?([a-zA-Z]+):[a-zA-Z]+

См. rubular.

person Fredrik Pihl    schedule 29.05.2011