![Как сопоставить строку до двух переносов строки?](https://rvso.com/image/1585766/%D0%9A%D0%B0%D0%BA%20%D1%81%D0%BE%D0%BF%D0%BE%D1%81%D1%82%D0%B0%D0%B2%D0%B8%D1%82%D1%8C%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D1%83%20%D0%B4%D0%BE%20%D0%B4%D0%B2%D1%83%D1%85%20%D0%BF%D0%B5%D1%80%D0%B5%D0%BD%D0%BE%D1%81%D0%BE%D0%B2%20%D1%81%D1%82%D1%80%D0%BE%D0%BA%D0%B8%3F.png)
Я знаю, что здесь уже много подобных вопросов и ответов, но я просто не могу из них что-то сделать.
Мне нужно сопоставить определенные вызовы функций с регулярным выражением, например:
Lib.myfunction( arg0, arg1,
arg2, arg3 )
Я ищу Lib.myFunction
конкретно, это не обязательно должно быть полностью обобщенно. Каждый такой вызов функции имеет дополнительную пустую строку сразу после.
Было бы немного лучше, если бы его можно было завершить переносом строки, затем необязательным пробелом, затем переносом строки, поскольку редакторы, как правило, добавляют пробелы для выравнивания с текстом на предыдущей строке.
Есть ли у вас идеи, как должно выглядеть регулярное выражение?
решение1
Lib\.myfunction\s*\(\s*\S+(?:,\s*\S+)*\s*\)
Объяснение:
Lib\.myfunction # literally
\s* # 0 or more spaces
\( # opening parenthesis
\s* # 0 or more spaces
\S+ # 1 or more NON spaces
(?: # start non capturing group
, # a comma
\s* # 0 or more spaces
\S+ # 1 or more NON spaces
)* # end group, may appear 0 or more times
\s* # 0 or more spaces
\) # closing parenthesis