Me gustaría eliminar una barra inclinada de una cadena. Por ejemplo, si tengo una cadena llamada $ test = "test /". ¿Cómo eliminaría la barra al final?¿Hay una expresión regular para eliminar una barra final en Perl?
Respuesta
Si está seguro de que hay es uno/al final todo el tiempo que puede utilizar la función chuleta:
$test = "test/";
$test = chop($test);
Si no está seguro de que puede hacer:
$test = "test/";
$test = $1 if($test=~/(.*)\/$/);
Con una expresión regular hacer: $test =~ s/\/$//
Alternativamente, si estás segura el último carácter va a ser una barra, puede utilizar la función chop: chop $test
Escribiría '$ test = ~ s [/ $] []' para la legibilidad. – Quentin
Usa el anclaje \ z para obtener el final absoluto de la cadena. –
Perdón por molestar, pero parece que esta expresión regular funciona para todos los directorios, * excepto * cuando se usa 'directorio raíz' * ->/<-.Simplemente eliminará la ruta raíz, que en algunos casos no es tan buena, porque comenzará con una barra inclinada final (¿paradoja?). ;-) – Semo
Usted puede utilizar el operador s///
substitución:
$test =~ s{/\z}{};
Las mentes geniales piensan igual ... – justintime
Use el anclaje \ z para obtener el final absoluto de la cadena. –
Personalmente me gustaría reformular esto para evitar la mezcla de "\" y "/"
$test =~ s|/$||
Si utiliza "|" que no es necesario citar el "/"
Usa el anclaje \ z para obtener el final absoluto de la cadena. –
Este fragmento se hará cargo de barras al final, excepto en el directorio raíz:
#!/usr/bin/perl
my $test = './';
$test =~ s{(.+)/\z}{\1};
print $test."\n";
Aquí es cómo funciona:
La primera parte de la expresión regular - s {(. +)/\ Z} - define un grupo entre corchetes (). Esto se referencia en el \ 1 en la segunda parte de la expresión regular - {\ 1}. Dentro de este grupo, definí uno o más caracteres - . + - seguido inmediatamente por una barra inclinada, seguida por el final absoluto de la cadena - \ z.
La expresión regular guarda todo dentro de los corchetes, para ser utilizado más tarde como \ 1 en la especificación de reemplazo
Esto funciona muy similar a una estrategia típica de sed, a saber (la segunda parte, en el fondo.):
echo "./" | sed -e 's:\(..*\)/$:\1:'
espero que esto sea de ayuda para usted.
Es bueno ver uno que aborde el problema del mundo real del directorio raíz. Dos ideas adicionales: 1) Creo que la forma recomendada de sustituir capturas en el reemplazo es con "$" en lugar de "\", aunque ambos funcionan. 2) Puede ser más eficiente simplemente capturar el carácter justo antes del final /, en lugar de potencialmente muchísimos caracteres. Incorporando ambos cambios, lo haría: 's {(.)/\ Z} {$ 1}' –
- 1. ¿Hay una expresión regular para detectar una expresión regular válida?
- 2. ¿Hay alguna manera de precompilar una expresión regular en Perl?
- 3. ¿Expresión regular para encontrar una expresión regular?
- 4. Herramienta de usuario final para generar una expresión regular
- 5. Expresión regular para eliminar metadatos
- 6. Escapar una barra inclinada en una expresión regular
- 7. ¿Cómo puedo eliminar texto entre paréntesis con una expresión regular?
- 8. Expresión regular para eliminar una subcadena entre dos caracteres
- 9. ¿Hay una expresión regular en Perl para encontrar la extensión de un archivo?
- 10. ¿Hay una función Perl para convertir una cadena en una expresión regular para usar esa cadena como patrón?
- 11. expresión regular y barra diagonal
- 12. ¿Qué expresión regular puede eliminar elementos duplicados de una cadena?
- 13. Javascript expresión regular: eliminar primera y la última barra
- 14. buscar el índice final de una expresión regular búsqueda/coincidencia
- 15. Expresión regular - Ruby vs Perl
- 16. Qué significa "\ 2" al final de una expresión regular
- 17. partido expresión regular para la final opcional slash
- 18. Perl dividida y expresión regular
- 19. Perl: Coincidencia de claves hash con una expresión regular
- 20. Coincidencia de una expresión regular varias veces con Perl
- 21. Interpolando una cadena en una expresión regular
- 22. Cómo terminar una expresión regular con una barra inclinada en Javascript
- 23. ¿Cómo se comenta una expresión regular de Perl?
- 24. Simplifica una expresión regular compleja
- 25. ¿Hay una expresión regular compatible con Perl para recortar el espacio en blanco de ambos lados de una cadena?
- 26. C# Expresión regular para validar una fecha?
- 27. Java: expresión regular para hacer coincidir una barra invertida seguida de una comilla
- 28. Comprueba si una expresión regular cubre otra expresión regular
- 29. Eliminar claves de la APC almacenadas con una expresión regular
- 30. Estoy buscando una expresión regular para eliminar una etiqueta HTML dada (x) de una cadena
¿Leyó la documentación * en absoluto *? p.ej. http://perldoc.perl.org/perreftut.html? – Ether