¿Cómo hacer coincidir una cadena hasta dos saltos de línea?

¿Cómo hacer coincidir una cadena hasta dos saltos de línea?

Sé que esto ya tiene muchas preguntas y respuestas similares aquí, pero no puedo unirlas a partir de eso.

Lo que quiero es hacer coincidir llamadas a funciones particulares con una expresión regular, por ejemplo:

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

Estoy buscando Lib.myFunctionespecíficamente, no tiene por qué ser completamente genérico. Cada llamada a esta función tiene una línea vacía adicional justo después.

Un pequeño extra sería si pudiera terminar con un salto de línea, luego un espacio en blanco opcional y luego un salto de línea, porque los editores tienden a agregar espacios en blanco para alinear con el texto en la línea anterior.

¿Tendrías ideas de cómo debería verse la expresión regular?

Respuesta1

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

Explicación:

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

Manifestación

información relacionada