Разбор строки Ruby для извлечения имен методов - PullRequest
0 голосов
/ 09 марта 2019

У меня есть строка, такая как

str1='f(x)myfunction1("a",1,"b"),f(x)myfunction2("c","d",4),
f(x)myfunction3("e","f","g",3)'

Я хочу написать регулярное выражение, используя сканирование или совпадение, где я создаю массив и извлекаю имена функций и связанные параметры.

myFunctionArry[0]='myfunction1("a",1,"b")'
myFunctionArry[1]='myfunction2("c","d",4)'
myFunctionArry[2]='myfunction3("e","f","g",3)'

Какой правильный способ извлечь?Я пробовал положительный и отрицательный взгляды, но я не могу правильно разделить каждое имя функции

str1.scan(/(?<=f\(x\))(.*)(?=\))/), похоже, дает мне неправильный результат.

1 Ответ

2 голосов
/ 09 марта 2019

Вы почти правильно поняли.

Сделайте * нежадным и включите закрывающую скобку в совпадение.

(?<=f\(x\))(.*?\))

https://regex101.com/r/8SEm9G/1

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...