2016-04-15 2 views
-3

Пусть я некоторые файлыРегулярного выражения для пути, содержащего имя файла, по крайней мере, один нечислового характером

\\foo\bar\12345.xml 
\\foo\bar\23456.xml 
\\foo\bar\12hellothere.xml 
\\foo\bar\34youpeople.xml 

Первые два характеризуются только имеющим числом в имени файла (не включая расширение). Последние два не состоят полностью из чисел.

Имена в каталоге могут содержать пробелы и цифры.

Кто-нибудь есть регулярное выражение, которое совпадает с последние два файла, и не первые два?

Я реализую это на Java, если это имеет значение.

По существу, я думаю, что это сводится к не .*\\\d+.xml, но я не знаю, как указать не.

+0

Простейшим (?): '[A-Za-Z] [^ \\] * \.xml' - убедитесь, что после последнего '' 'есть символ альфа-символа, – ClasG

ответ

0

только для имени файла: [0-9] [0-9] [AZ] +

Имя файла + .xml: [0-9] [0-9] [AZ] +. XML

имя Тьфу, но с более чем двух чисел на начало: [0-9] + [AZ] +

Существует сайт, где вы можете проверить свои регулярные выражения здесь: regexp

0

Лучший регулярный экспресс на для этого, вероятно, будет:

(только для файла, для ясности)

\ ш * \ D \ ш * .xml

Примечание: Это учитывая, что вы рассмотреть что-нибудь это не число, как действует, как 10 10.xml

EDIT: в случае, если вы хотите, чтобы это было письмо:

\ ш * [A-Za-Z] \ ш * .xml

0

Попробуйте

String[] s = { 
     "\\\\foo\\bar\\12345.xml", 
     "\\\\foo\\bar\\23456.xml", 
     "\\\\foo\\bar\\12hellothere.xml", 
     "\\\\foo\\bar\\34youpeople.xml", 
     "34youpeople.xml", 
    }; 
    for (String e : s) 
     System.out.println(e + " -> " + e.matches("(.*\\\\)?\\d+[a-zA-Z]+\\.xml")); 

результат:

\\foo\bar\12345.xml -> false 
\\foo\bar\23456.xml -> false 
\\foo\bar\12hellothere.xml -> true 
\\foo\bar\34youpeople.xml -> true 
34youpeople.xml -> true 
Смежные вопросы