Estoy tratando de encontrar una manera de hacer coincidir cada carácter entre dos cadenas.
Por ejemplo, para la cadena dada abc--def--ghi , quiero que la expresión regular coincida con d , e y f .
Intenté usar la siguiente expresión regular (?<=--)(.*)(?=--) , sin embargo, esto coincide con todos los caracteres entre -- ( def ), mientras que necesito hacer coincidir todos los caracteres entre -- .
s.match(/--(.*?)--/)[1].split("") no funciona porque necesito hacer esto sin dividir.
¿Alguna sugerencia?
En JavaScript, al usar el motor de expresiones regulares compatible con ECMAScript 2018+, puede lograr lo que desea sin dividir el paso adicional usando
/(?<=--(?:(?!--).)*).(?=(?:(?!--).)*--)/gs /(?<=--[^-]*(?:-(?!-)[^-]*)*).(?=[^-]*(?:-(?!-)[^-]*)*--)/gsVea la demostración de expresiones regulares (la segunda variante es la misma expresión regular que la primera, pero más eficiente ya que sigue el principio de "desenrollar el bucle"). Detalles :
(?<=--(?:(?!--).)*) - una ubicación inmediatamente precedida por -- y luego uno o más (tantos como sea posible) caracteres, cada uno de los cuales no comienza con -- secuencia de caracteres. - cualquier carácter individual(?=(?:(?!--).)*--) - seguido inmediatamente por uno o más (tantos como sea posible) caracteres, cada uno de los cuales no inicia una secuencia --char, -- luego -- . La bandera s habilita . para hacer coincidir cualquier carácter, incluidos los caracteres de salto de línea que . no coincide por defecto.