pregunta rápida: mi patrón es una cadena svg y se ve como l 5 0 l 0 10 l -5 0 l 0 -10
Para hacer una comparación unittest contra una referencia que necesito para deshacerme de todos excepto el primero l
Sé que puede deshacerse de todos y poner una 'l' por adelantado, o puedo usar subcadenas. Pero me pregunto si hay una expresión javascript para expresiones regulares para esto.Cómo reemplazar todo PERO la primera aparición de un patrón en la cadena
Respuesta
puede probar con una búsqueda negativa hacia delante, evitando el inicio de la cadena:
/(?!^)l/g
Ver si en línea: jsfiddle
Sí, esto parece funcionar gracias! –
Estoy tratando de modificar esto para que funcione para el primer carácter '-' que aparece, y estoy teniendo un momento muy difícil :(. Cualquier ayuda es apreciada. Gracias de antemano. –
¿Cómo usaría esto con una variable? – Wlliam
Algo como esto?
"l 5 0 l 0 10 l -5 0 l 0 -10".replace(/[^^]l/g, '')
Aunque esto sí funciona en este caso, ¿'^' no representa el carácter literal en una clase de caracteres? – pimvdb
'[^^]' coincide con cualquier carácter además de ''^''. No coincide con cero- caracteres en cualquier punto que no sea el inicio de la entrada como lo requiere. '(!/[^^] /. test ('^') && /[^^]/.test('x ')) === true' –
No hay JS RegExp a reemplazar todo-pero-la-primera-patrón-partido. Sin embargo, puede implementar este comportamiento pasando una función como un segundo argumento al método replace
.
var regexp = /(foo bar)(red)/g; //Example
var string = "somethingfoo bar red foo bar red red pink foo bar red red";
var first = true;
//The arguments of the function are similar to $0 $1 $2 $3 etc
var fn_replaceBy = function(match, group1, group2){ //group in accordance with RE
if (first) {
first = false;
return match;
}
// Else, deal with RegExp, for example:
return group1 + group2.toUpperCase();
}
string = string.replace(regexp, fn_replaceBy);
//equals string = "something foo bar red foo bar RED red pink foo bar RED red"
La función (fn_replaceBy
) se ejecuta para cada coincidencia. En la primera coincidencia, la función vuelve inmediatamente con la cadena coincidente (no ocurre nada) y se establece una bandera.
Cada otra coincidencia se reemplazará de acuerdo con la lógica tal como se describe en la función: Normalmente, usa $0 $1 $2
, etc., para hacer referencia a grupos. En fn_replaceBy
, los argumentos de la función son iguales a estos: Primer argumento = $0
, segundo argumento = $1
, etcétera.
La subcadena coincidente se reemplazará por el valor de retorno de la función fn_replaceBy
. El uso de una función como segundo parámetro para replace
permite aplicaciones muy potentes, como intelligent HTML parser.
Consulte también: MDN: String.replace > Specifying a function as a parameter
No estaba convencido de que el "analizador HTML inteligente" no se vincule con la respuesta "analizar HTML mediante la expresión regular", jaja. Pero fue una respuesta muy buena, esto era justo lo que necesitaba :) – henrebotha
"l 5 0 l 0 10 l -5 0 l 0 -10".replace(/^\s+/, '').replace(/\s+l/g, '')
se asegura el primer 'l'
no va precedida de espacio y elimina cualquier espacio seguido de un 'l'
.
- 1. Cómo reemplazar la primera aparición de cadena en Java
- 2. Reemplazar la primera aparición de cadena en Python
- 3. ¿Reemplazar la primera aparición solamente de una cadena?
- 4. División en la primera aparición
- 5. Reemplazar toda la aparición de una cadena en un elemento
- 6. Cómo buscar/reemplazar Regex solo la primera aparición en una cadena en .NET?
- 7. Reemplazar la última aparición de caracteres en la cadena
- 8. Regex: coincidiendo con la primera aparición de un personaje
- 9. ¿Cómo reemplazar la primera aparición de una expresión regular en Python?
- 10. ¿Se elimina la primera aparición de palabra de una cadena?
- 11. ¿Cómo obtener la primera aparición de un caracter en Subcadena
- 12. Tener sed hacer sustituto en la cadena, pero OMITIR primera aparición
- 13. Cómo encontrar la primera aparición con LINQ
- 14. Reemplazar solo la primera coincidencia utilizando preg_replace
- 15. ¿Cómo reemplazo la * primera instancia * de una cadena en .NET?
- 16. Uso de expresiones regulares para reemplazar solo la última aparición de un patrón con JS
- 17. Reemplazar una sola aparición de la cadena Obj-c
- 18. eliminar todo antes de la última aparición de un caracter
- 19. Devuelve la parte de una cadena antes de la primera aparición de un carácter en php
- 20. Reemplazar todos los demás a continuación, primera aparición en PHP
- 21. Con CSS solamente: Seleccione la primera aparición de la clase a través de todo el documento
- 22. Retire todo antes de la primera "" en una cadena
- 23. ¿Reemplazar la primera letra de una cadena en Java?
- 24. ¿Cómo reemplazar todo # {key} en una cadena?
- 25. ¿Cómo puedo dividir una cadena en la primera aparición de algo?
- 26. encontrar la primera aparición de la clase en div
- 27. SQL: devolver sólo la primera aparición
- 28. ¿Cómo reemplazar la última aparición de una subcadena en ruby?
- 29. sed reemplazar cadena en una primera línea
- 30. Buscar y reemplazar enésima aparición de la expresión [entre corchetes] en la cadena
¿La primera siempre está al comienzo de la cadena? –
Sé que dijiste que no quieres esto, pero subscribir hasta el primer espacio parece ser el más fácil de leer y mantener. – Randy
@ Marque sí para este uso, es incluso 'l', pero eso también funciona con un aspecto negativo. –