Tengo un punto y una cadena de escape de barra invertida. Me gustaría dividir la cadena usando cualquier período sin escape, pero estoy luchando por encontrar un patrón para hacerlo.
const escaped = "two slashes: \\\\.one period: \..line and a dot: \\\."; // ["two slashes: \\", "one period: .", "line and a dot: \."] console.log(escaped.split(/* ? */)) Este (?<!\\)(?:(\\\\)*)[*] está cerca, pero split() incluye capturar grupos en la matriz de salida, que no es lo que me gustaría. La solución debe ser de solo coincidencia, como aquí :
(?<!\\)(?:\\\\)*\K\.La solución de búsqueda avanzada positiva funcionará con cualquier entorno de JavaScript compatible con el estándar ECMAScript 2018+:
/(?<=(?<!\\)(?:\\\\)*)\./Vea esta demostración de expresiones regulares .
La expresión regular coincide con cualquier . char que está precedido inmediatamente por cualquier cantidad de barras invertidas (es decir, incluso si no hay barras invertidas antes de . en absoluto).
Con un entorno JavaScript más antiguo, necesitará una solución alternativa como text.match(/(?:\\[^]|[^\\.])+/g) . Vea esta demostración de expresiones regulares . Esto coincide con una o más secuencias de aa \ y cualquier carácter individual o cualquier letra individual que no sea una barra invertida y un punto.