Регулярное выражение для поиска файлов с различными расширениями, такими как-ASPX, ASCX, .js, .rpt, .xml - PullRequest
0 голосов
/ 28 мая 2009

Можно ли написать RegEx, который можно использовать для поиска файлов с разными расширениями.

Ответы [ 3 ]

3 голосов
/ 16 декабря 2011

Это работает в Bash:

find . -regex  '.*\\.\\(pdf\|chm\|doc\\)'
1 голос
/ 28 мая 2009

Если у вас есть список файлов и вы ищете .pdf, .chm и .doc, вы можете проверить его с помощью:

\.pdf$|\.chm$|\.doc$

Приведенное выше регулярное выражение должно работать, если вы проверите его по одному имени файла.

1 голос
/ 28 мая 2009

Я уверен, что есть, но вопрос, который вы должны задать, - «Какой лучший способ найти файлы с определенными расширениями?».

Регулярные выражения не лучший ответ на каждый вопрос.

Я бы предложил просто получить список всех файлов и передать их в функцию типа IsThisFileOneIWant(fileName,extensionList). Это гораздо проще, чем пытаться использовать регулярные выражения в своей задаче.

Что-то вроде этого должно сделать это:

function IsThisFileOneIWant(fileName,extensionList):
    for each extension in extensionList:
        if fileName.endsWith (extension):
            return true
    return false

Выполнено в псевдокоде, поскольку оно должно быть достаточно простым для превращения в любой другой язык.

Если вы должны иметь регулярное выражение, оно будет выглядеть примерно так (на основе значений в вашем вопросе):

"ASPX$|ASCX$|\.js$|\.rpt$|\.xml$"

но это полностью зависит от двигателя RE, который вы хотите использовать. Например, вот вывод команды egrep в моей рабочей директории:

pax@paxbox1:~/work$ ls -1 | egrep '\.sh$|\.c$'
  backup0.sh
  backup1.sh
  eclipse.sh
  monbt.sh
  qq.c
  qq.sh
  xx yy.sh
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...