Quiero una expresión regular de Javascript o con cualquier solución posible. Para una cadena dada, encuentra todas las subcadenas que comienzan con una cadena en particular y terminan con un carácter en particular. El conjunto devuelto de subStrings puede ser un Array.
esta cadena también puede haber anidado entre paréntesis.
var str = "myfunc(1,2) and myfunc(3,4) or (myfunc(5,6) and func(7,8))";carácter inicial = "myfunc" carácter final = ")" . aquí el carácter final debe coincidir primero con el paréntesis de cierre.
salida: función con argumentos.
[myfunc(1,2), myfunc(3,4), myfunc(5,6), func(7,8)]He probado con esto. pero, siempre regresa nulo.
var str = "myfunc(1,2) and myfunc(3,4) or (myfunc(5,6) and func(7,8))"; var re = /\myfunc.*?\)/ig var match; while ((match = re.exec(str)) != null){ console.log(match); }¿Puedes ayudar aquí?
Probé tu expresión regular y parece funcionar bien:
let input = "myfunc(1,2) and myfunc(3,4) or (myfunc(5,6) and func(7,8))" let pattern = /myfunc.*?\)/ig // there is no need to use \m since it does nothing, and NO you dont need it even if you use 'm' at the beginning. console.log(input.match(pattern)) //[ "myfunc(1,2)", "myfunc(3,4)", "myfunc(5,6)" ] Si usa (?:my|)func\(.+?\) también podrá capturar 'func(7,8)'.
(?:my|) ( start of group ?: non capturing group my| matches either 'my' or null, this will match either myfunc or func ) end of groupPruebe la expresión regular aquí: https://regex101.com/r/3ujbdA/1