¿Hay una expresión regular en Perl para encontrar la extensión de un archivo? Por ejemplo, si tengo "test.exe
", ¿cómo obtendré el ".exe
"?¿Hay una expresión regular en Perl para encontrar la extensión de un archivo?
Respuesta
my $file = "test.exe";
# Match a dot, followed by any number of non-dots until the
# end of the line.
my ($ext) = $file =~ /(\.[^.]+)$/;
print "$ext\n";
\.[^\.]*$
Esto le daría todo lo que tras el último punto (incluyendo el punto en sí) hasta el final de la cadena.
Usted podría utilizar File::Basename para extraer una extensión de archivo arbitrario:
use strict;
use warnings;
use File::Basename;
my $ext = (fileparse("/foo/bar/baz.exe", qr/\.[^.]*/))[2];
print "$ext";
uso de archivos :: Nombre base
use File::Basename;
($name,$path,$suffix) = fileparse("test.exe.bat",qr"\..[^.]*$");
print $suffix;
Nunca pensé que File :: Basename fuera bueno para este trabajo, teniendo en cuenta que debe proporcionar el patrón que podría haber usado con el operador de coincidencia para hacer lo mismo. –
si es solo para obtener extensión, una expresión regular normal sería suficiente. Pero File :: Basename analiza el resto de la ruta también. Si OP necesita obtenerlos además de la necesidad de extensión, File :: Basename es útil. – ghostdog74
Advertencia: Tenía archivos que los usuarios nombraron como 'filename..doc' y la actualización del sufijo anterior devolverá' ..doc' como la extensión. Prefiera la respuesta @toolic (o Perl Docs for File: Basename) si va en esta dirección. –
Aquí se trata de una expresión regular para que coincida con el patrón n archivo de extensión de nivel (por ejemplo, .tar.gz o .tar.bz2).
((\.[^.\s]+)+)$
Ejemplo:
#!/usr/bin/perl
my $file1 = "filename.tar.gz.bak";
my ($ext1) = $file1 =~ /((\.[^.\s]+)+)$/;
my $file2 = "filename.exe";
my ($ext2) = $file2 =~ /((\.[^.\s]+)+)$/;
my $file3 = "filename. exe";
my ($ext3) = $file3 =~ /((\.[^.\s]+)+)$/;
my $file4 = "filename.............doc";
my ($ext4) = $file4 =~ /((\.[^.\s]+)+)$/;
print "1) $ext1\n"; # prints "1) .tar.gz.bak"
print "2) $ext2\n"; # prints "2) .exe"
print "3) $ext3\n"; # prints "3) "
print "4) $ext4\n"; # prints "4) .doc"
- 1. ¿Expresión regular para encontrar una expresión regular?
- 2. Expresión regular para eliminar la extensión de un archivo
- 3. Python: encontrar expresión regular en un archivo
- 4. ¿Hay una expresión regular para detectar una expresión regular válida?
- 5. ¿Hay alguna manera de precompilar una expresión regular en Perl?
- 6. Expresión regular - Ruby vs Perl
- 7. Expresión regular de Perl no puede encontrar citas sofisticadas "
- 8. ¿Hay una expresión regular para eliminar una barra final en Perl?
- 9. Expresión regular para encontrar la última palabra en la oración
- 10. Perl dividida y expresión regular
- 11. expresión regular para encontrar el URL en un texto
- 12. Expresión regular para encontrar cualquier número en una cadena
- 13. expresión regular para encontrar números decimales/float?
- 14. Expresión regular: cómo encontrar una coincidencia dentro de un partido?
- 15. Perl un trazador de líneas para encontrar y reemplazar en un archivo con una variable
- 16. encontrar por la expresión regular con Casbah
- 17. Expresión regular para reemplazar los números en un archivo
- 18. Encontrar líneas en un archivo de texto que coincida con una expresión regular
- 19. nombre del partido y la extensión de archivo de una sola expresión regular
- 20. ¿Por qué no hay un estándar de expresión regular?
- 21. Perl: Coincidencia de claves hash con una expresión regular
- 22. ¿Cómo puedo encontrar todas las coincidencias con una expresión regular en Perl?
- 23. ¿Hay una función Perl para convertir una cadena en una expresión regular para usar esa cadena como patrón?
- 24. ¿Qué expresión regular usaría para encontrar la palabra "oy"?
- 25. Expresión regular de analizar un archivo binario?
- 26. expresión regular para los dígitos en Unix encontrar comando
- 27. Expresión regular para analizar un archivo de registro y encontrar stacktraces
- 28. Coincidencia de una expresión regular varias veces con Perl
- 29. expresión regular para encontrar caracteres especiales en Java
- 30. ¿Cómo puedo encontrar letras repetidas con una expresión regular de Perl?
@ Ether..I creo que es una gran pregunta. He estado en Perl de forma intermitente durante más de una década y hay momentos en los que solo quiero una referencia rápida. – Anshu