Regex для сопоставления определенных функций и их аргументов в файлах
Я работаю над парсером gettext javascript, и я застрял в регулярном выражении синтаксического анализа.
Мне нужно перехватить каждый аргумент, переданный конкретному вызову метода_n(
а также_(
, Например, если у меня есть эти в моих файлах JavaScript:
_("foo") // want "foo"
_n("bar", "baz", 42); // want "bar", "baz", 42
_n(domain, "bux", var); // want domain, "bux", var
_( "one (optional)" ); // want "one (optional)"
apples === 0 ? _( "No apples" ) : _n("%1 apple", "%1 apples", apples) // could have on the same line two calls..
Это ссылка на эту документацию:http://poedit.net/trac/wiki/Doc/Keywords
Я планирую сделать это в два раза (и два регулярных выражения):
поймать все аргументы функции для_n(
или же_(
вызовы методовтолько ловитьПо сути, я бы хотел, чтобы Regex мог сказать «поймать все после_n(
или же_(
и остановитьсяв последних скобках)
на самом деле, когда функция выполнена, Я не знаю, если это возможно с регулярным выражением и без парсера JavaScript.
Что также можно сделать, это «поймать каждую» строку или «строку» после_n(
или же_(
и остановиться в конце строки ИЛИ в начале нового_n(
или же_(
персонаж.
Во всем, что я сделал, я застрял на_( "one (optional)" );
с внутренней скобкой илиapples === 0 ? _( "No apples" ) : _n("%1 apple", "%1 apples", apples)
с двумя вызовами на одной линии.
Вот что я реализовал до сих пор с неидеальным регулярным выражением:универсальный парсер иодин JavaScript илируль один