2016-10-10 3 views
0

У меня есть строкаRegex заменить функцию в строке

Apply the function K(i, x<=>k) for more info. 

Я хочу, чтобы преобразовать K(i, x<=>k) в K_{i}(x<>k), но аргументы внутри функции K может меняться, так что я предполагаю, что это что-то вроде

string.replace(/\K\([.?],[.?]\)/g, 'K_{$1}($2)') 

Редактировать

Извините за неопределенное объяснение того, что могут быть аргументами для K. Я просто подумал, что регулярное выражение будет быстрее, если оно не укажет, какие аргументы могут быть, но у него были только некоторые заполнители.

Первый аргумент K может быть только цифры и буквы, а второй аргумент K могут быть цифры, буквы, пробелы, ->, < -> [], <> &, | и ~, и не может быть больше двух аргументов, поэтому шаблон всегда K (что-то, что-то).

Оставшаяся строка также меняется. Таким образом, строка может также выглядеть I have a function K(i,a) and two other functions K(3,p&s |r) and K(f, ~g)

+0

и проблема ...? – k102

+1

Приведите несколько примеров, если вы хотите, чтобы регулярное выражение соответствовало нескольким случаям. –

+2

* «аргументы могут различаться» * ... это довольно расплывчато, чтобы иметь возможность писать регулярное выражение по отношению к – charlietfl

ответ

2

Может быть что-то подобное (вы забыли группы арг для значения замены):

string.replace(/K\(([a-zA-Z0-9]+), ?(.+)\)/g, 'K_{$1}($2)')