2011-01-09 11 views

Respuesta

17

En la mayoría de los idiomas regex, ^\. o ^[.] coincidirá con un punto inicial.

+0

No creo que su segunda expresión regular esté funcionando. Al menos en perl/java/php no funcionará como lo desea. –

+3

@Toader: ¿WTF? Funciona exactamente como se pretendía en Perl, Java, PHP, grep, awk y otras herramientas que he probado en este momento. – ephemient

+1

maldición ... pensé que [] significa cualquiera de las expresiones internas y. significa cualquier char. Supongo que es un caso especial. Necesito leer sobre eso;). Lo siento, tienes razón. –

4

El ^ coincide con el comienzo de una cadena en la mayoría de los idiomas. Esto coincidirá con un . líder. Necesita agregarle su expresión de nombre de archivo.

^\. 

Del mismo modo, $ coincidirá con el final de una cadena.

+2

¿No bastaría con '^ \ .'? O '^ \ .. +'? El tuyo coincide con los ejemplos, pero el evento impar de '.1st_pwd' falla. – Dan

+0

Sí, [a-z] debería ser reemplazado por su expresión actual para los nombres de archivo. Es simplemente un ejemplo. – jasonbar

1

Depende un poco en la biblioteca de expresiones regulares que utiliza, pero se puede hacer algo como esto:

^\.\w+ 

Los ^ anclas el partido al principio de la cadena, la \. coincide con un periodo literal (dado que un . no guardado en una expresión regular típicamente coincide con cualquier carácter), y \w+ coincide con 1 o más caracteres de "palabra" (alfanuméricos más _).

Consulte la documentación de perlre para obtener más información sobre las expresiones regulares de estilo Perl y su sintaxis.

1

Depende de qué caracteres sean legales en un nombre de archivo, lo que depende del sistema operativo y del sistema de archivos.

Por ejemplo, en Windows que sería:

^\.[^<>:"/\\\|\?\*\x00-\x1f]+$

significa La expresión anterior:

  • de ajuste de una cadena que comienza con el carácter literal .
  • Seguido por al menos un carácter que no es uno de (clase completa de caracteres inválidos sigue)

He utilizado this como referencia con respecto a los caracteres que no están permitidos en los nombres de archivo.

1

Para que coincida con la cadena que comienza con el punto en Java, tendrá que escribir una expresión simple

^\\..* 

^significa la expresión regular es que se ajustará desde el inicio de la cadena
\. significa que comenzará con la cadena literal "."
. * Significa que el punto irá seguido de 0 o más caracteres

1

Es posible que tenga que sustituir el \ por el carácter de escape de idioma correspondiente.Sin embargo, bajo Powershell la expresión regular que uso es: ^(\.)+\/

caso de prueba:

"../NameOfFile.txt" -match '^(\\.)+\\\/' 

obras, mientras que

"_./NameOfFile.txt" -match '^(\\.)+\\\/' 

no.

Naturalmente, puede preguntar, bueno, ¿qué está pasando aquí?

El (\\.) busca el literal . seguido de un +, que coincide con el carácter anterior al menos una o más veces.

Finalmente, el \\\/ asegura que se ajusta a una ruta de archivo de Windows.

Cuestiones relacionadas