Tengo un texto de ejemplo:
var text = `class Eee { test(){ console.log("123"); } } use(123, Eee); class Ttt { test(){ console.log("123"); } } use(456, Ttt); class Ooo { test(){ console.log("123"); } } use(111, Ooo); `;Y no obtendré parte del texto, por ejemplo:
`class Ttt { test(){ console.log("123"); } } use(456, Ttt);`Si uso RegEx:
let result = text.match(/^class Ttt \{(.*)/gm); Tengo resultado: [ 'class ttt {' ]
Si uso RegEx:
let result = text.match(/^class Ttt \{(.*)\}/gm);o
let result = text.match(/^class Ttt \{(.*)use\([\b].Ttt\);/gm); Tengo resultado: null . ¿Cómo puedo obtener todo el texto que quiero, no la primera línea?
Usted especificó dónde debe comenzar el partido, pero también debe especificar dónde debe terminar.
Si el final, por ejemplo, está al comienzo de una nueva línea y se debe use(456, Ttt); por sí mismo:
^[^\S\n]*class Ttt {[^]*?\n\s*}\s*\n\s*use\(.*\);$ Tenga en cuenta que \s también puede coincidir con saltos de línea.
El patrón en partes:
^ Comienzo de cadena[^\S\n]* Coincidencia de caracteres de espacios en blanco opcionales sin saltos de líneaclass Ttt { Coincide literalmente[^]*? Haga coincidir cualquier carácter, incluidas las líneas nuevas, la menor cantidad posible\n\s*}\s* Coincide con una nueva línea y } entre caracteres de espacio en blanco opcionales\nuse\(.*\); Haga coincidir una nueva línea y use(...);$ Fin de la cadenaDemostración de expresiones regulares
var text = `class Eee { test(){ console.log("123"); } } use(123, Eee); class Ttt { test(){ console.log("123"); } } use(456, Ttt); class Ooo { test(){ console.log("123"); } } use(111, Ooo); `; const regex = /^[^\S\n]*class Ttt {[^]*?\n\s*}\s*\n\s*use\(.*\);$/m; const m = text.match(regex); if (m) { console.log(m[0]); }Por lo que vale, aquí hay una versión sin expresiones regulares:
'class ' + text.split('class ')[1] var text = `class Eee { test(){ console.log("123"); } } use(123, Eee); class Ttt { test(){ console.log("123"); } } use(456, Ttt); class Ooo { test(){ console.log("123"); } } use(111, Ooo); `; console.log('class ' + text.split('class ')[1])