El String#matches()
acepta regular expressionpatterns.
La variante regex de la variante "laico" *2010*.txt
sería .*2010.*\.txt
.
Así que el siguiente debería funcionar:
public boolean accept(File dir, String name) {
return name.matches(".*2010.*\\.txt");
}
La doble barra invertida está ahí para representar una barra inversa real, porque la barra invertida en sí es un carácter de escape en Java de String
.
Como alternativa, también puede hacerlo sin expresiones regulares usando los otros String
métodos:
public boolean accept(File dir, String name) {
return name.contains("2010") && name.endsWith(".txt");
}
Su mejor apuesta es probable que deje ptrn
representan un verdadero patrón de expresión o cadena de reemplazar cada .
con \.
y *
con .*
para que se convierta en un patrón de expresiones regulares válido.
public boolean accept(File dir, String name) {
return name.matches(ptrn.replace(".", "\\.").replace("*", ".*"));
}
¿Qué otros patrones se necesita para apoyar? – OscarRyz