tengo una expresión regular como el siguiente ejemplo simplificado:uso de JavaScript expresión regular para encontrar el primer y el partido más largo
var exp = /he|hell/;
Cuando lo ejecuto en una cadena que me dará el primer partido, fx:
var str = "hello world";
var match = exp.exec(str);
// match contains ["he"];
Quiero la primera y la mayor coincidencia posible, y me comparo por índice y luego por longitud.
Dado que la expresión se combina de una matriz de RegExp, estoy buscando una manera de encontrar la coincidencia más larga sin tener que volver a escribir la expresión regular.
¿Eso es posible?
Si no es así, estoy buscando una forma de analizar fácilmente la expresión y organizarla en el orden correcto. Pero no puedo encontrar la manera ya que las expresiones podría ser mucho más complejo, fx:
var exp = /h..|hel*/
Su segundo ejemplo sería mucho más interesante si fuera por ejemplo: '/ h .... | hel * /' –
Me parece lo mismo. De hecho, quería ilustrar que la expresión regular más larga no era necesariamente la más larga. Mi expresión simple debería haber sido algo así como '/ h. *? | Hello /'. Pero supongo que los usuarios de este sitio saben lo que quiero decir de todos modos. Al menos lo hiciste :-) –
Si las aserciones look-behind de ancho variable fueran posibles en javascript (como lo son, por ejemplo, en los sabores regex de .NET y JGsoft) podrías lograrlo de esta manera: 'exp = /.*(?<=h .. | hel *)/'. Pero hasta ahora esta característica no se espera en JS. –