Estoy analizando texto que es muchas repeticiones de un patrón simple. El texto está en el formato de un guión para una obra de teatro, así:Expresión regular para unir todos los caracteres hasta la próxima coincidencia
SAMPSON
I mean, an we be in choler, we'll draw.
GREGORY
Ay, while you live, draw your neck out o' the collar.
Actualmente estoy usando el patrón ([A-Z0-9\s]+)\s*\:?\s*[\r\n](.+)[\r\n]{2}
, que funciona bien (la explicación más abajo) a excepción de cuando el discurso del personaje tiene saltos de línea en ella . Cuando eso sucede, el nombre del personaje se captura con éxito, pero solo se captura la primera línea del discurso.
Al activar el modo de línea única (para incluir saltos de línea en .
) se crea una coincidencia gigante.
¿Cómo puedo decirle al (.+)
que pare cuando encuentra el siguiente nombre de personaje y finaliza la coincidencia?
Estoy iterando sobre cada coincidencia individualmente (JavaScript), por lo que el nombre debe estar disponible para la próxima coincidencia.
Idealmente, podría hacer coincidir todos los caracteres hasta que se repita todo el patrón.
Patrón explicó:
El primer grupo coincide con el nombre de un personaje (que permite letras mayúsculas, números y espacios en blanco), (con dos puntos de fuga y el espacio en blanco opcional).
El segundo grupo (discurso del personaje) comienza en una nueva línea y captura cualquier carácter (excepto, problemáticamente, saltos de línea y caracteres después de ellos).
El patrón termina (y comienza de nuevo) después de una línea en blanco.
Es necesario definir de manera inequívoca cómo se determina en el siguiente nombre comienza antes de que pueda decreto judicial e una expresión regular para unirla. ¿Es una palabra única seguida de dos puntos en una línea sola? ¿Eso daría lugar a cualquier coincidencia incorrecta? – mellamokb
@mellamokb Olvidé incluir la última parte del patrón, que busca una línea en blanco. El partido comienza con el nombre del personaje (todas las mayúsculas en su propia línea) y termina en la línea en blanco después del discurso. – Nathan
Creo que faltan dos puntos en el texto de muestra, la expresión regular no funciona. –