Como combinar string até duas quebras de linha?

Como combinar string até duas quebras de linha?

Eu sei que isso já tem muitas perguntas e respostas semelhantes aqui, mas simplesmente não consigo entender a partir disso.

O que eu quero é combinar chamadas de função específicas com uma expressão regular, por exemplo:

Lib.myfunction( arg0, arg1,
                arg2, arg3 )

Estou procurando Lib.myFunctionespecificamente, não precisa ser totalmente genérico. Cada chamada de função tem uma linha vazia extra logo depois.

Um pouco mais seria se ele pudesse ser finalizado com quebra de linha, depois com espaço em branco opcional e depois com quebra de linha, porque os editores tendem a adicionar espaços em branco para alinhar com o texto na linha anterior.

Você teria ideias de como deveria ser a regex?

Responder1

Lib\.myfunction\s*\(\s*\S+(?:,\s*\S+)*\s*\)

Explicação:

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

Demonstração

informação relacionada