Necesito capturar dos coincidencias entre un signo igual: (test1)=(test2) tal que coincidencia1 = prueba1 y coincidencia2 = prueba2. Hasta ahora, he podido usar /\([\s\S\)\(]*?\)/gmi que en su mayoría funciona A MENOS QUE haya un paréntesis cercano adicional a cada lado del signo igual, es decir: (test1) =(te)st2).
¿Qué expresión regular podría crear que me permitiera terminar con éxito con dos coincidencias dado lo siguiente:
"(test1)=(tes=)t2)".match( /\([\s\S\)\(]*?\)/gmi ) === ["test1", "tes=)t2"]Para los ejemplos en la pregunta y si se admite el uso de miradas, puede afirmar que el paréntesis de cierre no puede contener = o ) a la derecha.
Tenga en cuenta que puede omitir el indicador /m ya que no hay anclas en el patrón, y también puede omitir el indicador /i ya que el patrón no coincide específicamente con los caracteres en mayúsculas o minúsculas.
let regex = /(?<=\().*?(?=\)(?![^\s=)]))/g; let str = "(test1)=(tes=)t2)"; console.log(str.match(regex));O usando un grupo de captura sin una afirmación de mirar atrás:
let regex = /\((.*?)\)(?![^\s=])/g; let str = "(test1)=(tes=)t2)"; const result = Array.from(str.matchAll(regex), m => m[1]); console.log(JSON.stringify(result) === JSON.stringify(["test1", "tes=)t2"]));