Es posible que desee indicar en qué entorno está utilizando Regex. Puede haber diferencias dependiendo de exactamente lo que quiere decir con "ignorar" saltos de línea.
Utilicé (?<=)mirar hacia atrás y mirar hacia adelante (?=)para que "Esto es" y "oración" no se incluyan en el partido, pero esto depende de su caso de uso, también puede simplemente escribir This is(.*)sentence.
Lo importante aquí es que active el modo "dotall" de su motor regex, de modo que .coincida con la nueva línea. Pero cómo lo haces depende de tu motor regex.
Lo siguiente es si usa .*o .*?. La primera es codiciosa y coincidirá hasta la última "oración" en su cadena, la segunda es perezosa y coincidirá hasta la próxima "oración" en su cadena.
@ tchrist, lo siento, tuve que buscar esto. ¿Entiendo esto correcto y This is(?s)(.*)sentenceestaría funcionando?
Stema
@stema: Sí, eso debería funcionar para habilitar el modo "dot all" en la mayoría de las bibliotecas de expresiones regulares.
tchrist
1
Eso resolvió mi problema, pero ¿cómo incluyo un espacio en blanco en mi patrón? Intenté lo siguiente: "(. *?) ())" Para que coincida con el ")" al final de una secuencia, pero no funcionó.
0xbadf00d
28
Solo una nota: regexr dice ahora que mirar hacia atrás no es compatible con javascript
Kovo
2
¿Hay alguna manera de lidiar con instancias repetidas de esta división en un bloque de texto? Por ejemplo: "Esto es solo una oración simple. Aquí hay algunas cosas adicionales. Esto es solo una oración simple. Y aquí hay algunas cosas más. Esto es solo una oración simple". Actualmente coincide con la cadena completa, en lugar de cada instancia.
jzadra
182
Cuantificador perezoso necesario
Resucitar esta pregunta porque la expresión regular en la respuesta aceptada no me parece correcta. ¿Por qué? Porque
(?<=Thisis)(.*)(?=sentence)
coincidirá my first sentence. This is my secondenThis is my first sentence. This is my second sentence.
Necesita un cuantificador perezoso entre las dos miradas. Agregar un ?hace que la estrella sea perezosa.
Esto coincide con lo que quieres:
(?<=Thisis).*?(?=sentence)
Ver demo . Eliminé el grupo de captura, que no era necesario.
Modo DOTALL para igualar saltos de línea
Tenga en cuenta que en la demostración, el "punto coincide con el modo de salto de línea" (también conocido como) dot-all está configurado (vea cómo activar DOTALL en varios idiomas ). En muchos sabores de (?s)expresiones regulares, puede configurarlo con el modificador en línea , convirtiendo la expresión en:
Tienes razón sobre el grupo de captura. No sé por qué he hecho esto. Pero la diferencia entre .*y .*?también se explica en mi respuesta (el párrafo anterior a "Actualización"). Entonces no creo que mi respuesta sea incorrecta.
Stema
2
@stema Perdón por las críticas, mientras que ayer examiné algunas de tus respuestas, esa es la única que me hizo temblar. :) Suavicé la primera línea del is incorrecta doesn't seem quite correct to me... espero que no haga que la contracción nerviosa, probablemente sólo una diferencia de percepción acerca de cuál debe ser la expresión regular para una tal respuesta de alto tráfico.
zx81
39
Probar This is[\s\S]*sentence, funciona en javascript
Me pareció útil eliminar el comienzo de las líneas de registro (marca de tiempo, etc.). Usé una nueva línea para la cadena inicial y "at" para la cadena final.
Stan
2
En caso de que alguien esté buscando un ejemplo de esto dentro del contexto de Jenkins. Analiza el build.log y si encuentra una coincidencia, falla la compilación con la coincidencia.
No estoy seguro de que la pregunta sea sobre cómo hacer esto en Sublime Text pero funciona principalmente en Sublime Text. No funciona cuando sucede que hay un salto de línea entre "Esto es" y "oración". Además, el texto sublime también selecciona "Esto es" y "Oración" en lugar de solo el texto entre esas dos cadenas.
Dylan Kinnett el
0
Así es como lo hice:
Esto fue más fácil para mí que tratar de descubrir la expresión regular específica necesaria.
Llegué aquí en mi búsqueda de expresiones regulares para convertir esta sintaxis de impresión entre print "string", en Python2 en scripts antiguos con: print ("string"), para Python3. Funciona bien, de lo contrario use 2to3.py para conversiones adicionales. Aquí está mi solución para los demás:
Pruébelo en Regexr.com (por alguna razón no funciona en NP ++):
Respuestas:
Por ejemplo
Regexr
Utilicé
(?<=)
mirar hacia atrás y mirar hacia adelante(?=)
para que "Esto es" y "oración" no se incluyan en el partido, pero esto depende de su caso de uso, también puede simplemente escribirThis is(.*)sentence
.Lo importante aquí es que active el modo "dotall" de su motor regex, de modo que
.
coincida con la nueva línea. Pero cómo lo haces depende de tu motor regex.Lo siguiente es si usa
.*
o.*?
. La primera es codiciosa y coincidirá hasta la última "oración" en su cadena, la segunda es perezosa y coincidirá hasta la próxima "oración" en su cadena.Actualizar
Regexr
Donde (? S) activa el modificador dotall, haciendo que
.
coincidan los caracteres de nueva línea.Actualización 2:
coincide con su ejemplo "Esta es una oración (simple)". Ver aquí en Regexr
fuente
This is(?s)(.*)sentence
estaría funcionando?Cuantificador perezoso necesario
Resucitar esta pregunta porque la expresión regular en la respuesta aceptada no me parece correcta. ¿Por qué? Porque
coincidirá
my first sentence. This is my second
enThis is my first sentence. This is my second sentence.
Ver demo .
Necesita un cuantificador perezoso entre las dos miradas. Agregar un
?
hace que la estrella sea perezosa.Esto coincide con lo que quieres:
Ver demo . Eliminé el grupo de captura, que no era necesario.
Modo DOTALL para igualar saltos de línea
Tenga en cuenta que en la demostración, el "punto coincide con el modo de salto de línea" (también conocido como) dot-all está configurado (vea cómo activar DOTALL en varios idiomas ). En muchos sabores de
(?s)
expresiones regulares, puede configurarlo con el modificador en línea , convirtiendo la expresión en:Referencia
fuente
.*
y.*?
también se explica en mi respuesta (el párrafo anterior a "Actualización"). Entonces no creo que mi respuesta sea incorrecta.is incorrect
adoesn't seem quite correct to me
... espero que no haga que la contracción nerviosa, probablemente sólo una diferencia de percepción acerca de cuál debe ser la expresión regular para una tal respuesta de alto tráfico.Probar
This is[\s\S]*sentence
, funciona en javascriptfuente
[\s\S]*?
(también llamado: comodín no codicioso)Esta:
funciona en javascript.
fuente
utilizar este:
(?<=beginningstringname)(.*\n?)(?=endstringname)
fuente
endstringname
En caso de que alguien esté buscando un ejemplo de esto dentro del contexto de Jenkins. Analiza el build.log y si encuentra una coincidencia, falla la compilación con la coincidencia.
fuente
Simplemente puede usar esto:
\This is .*? \sentence
fuente
Esto funcionó para mí (estoy usando VS Code ):
para:
This is just\na simple sentence
Utilizar:
This .+ sentence
fuente
Sublime Text 3x
En texto sublime, simplemente escribe las dos palabras que le interesa mantener, por ejemplo, en su caso, es
"Esto es" y "oración"
y escribes. * en el medio
es decir
This is .* sentence
y esto debería hacerte bien
fuente
Así es como lo hice:
Esto fue más fácil para mí que tratar de descubrir la expresión regular específica necesaria.
fuente
para una búsqueda rápida en VIM, puede usar en el indicador de control de Vim: / Esto es. * \ _. * oración
fuente
Llegué aquí en mi búsqueda de expresiones regulares para convertir esta sintaxis de impresión entre print "string", en Python2 en scripts antiguos con: print ("string"), para Python3. Funciona bien, de lo contrario use 2to3.py para conversiones adicionales. Aquí está mi solución para los demás:
Pruébelo en Regexr.com (por alguna razón no funciona en NP ++):
para variables:
para etiqueta y variable:
¿Cómo reemplazar todas las "cadenas" de impresión en Python2 con print ("cadena") para Python3?
fuente
RegEx para hacer coincidir todo entre dos cadenas utilizando el enfoque de Java.
Usemos objetos Pattern y Matcher para usar RegEx (. ?) * .
Dado que Matcher puede contener más de una coincidencia, debemos recorrer los resultados y almacenarlos.
Este ejemplo solo contendrá "guardará la palabra " , pero en el texto más grande probablemente encontrará más coincidencias.
fuente