* Предыдущий символ повторяется любое число раз (в том числе ни разу). Например, выражению zo* соответствуют как 'z', так и 'zoo'
+ Предыдущий символ повторяется не менее одного раза. Например, выражению zo+ соответствует 'zoo', но не 'z'
? Предыдущий символ повторяется не более одного раза
. (точка) Любой символ, кроме перевода строки
х|у Либо символ 'х', либо символ 'у'. Например, выражению z| food соответствуют 'z' или 'food'
[xyz] Множество символов. Означает любой один символ из набора символов, заключенных в квадратные скобки. Например, выражению [abc] соответствует символ 'а' в слове 'plain'
[a-z] Диапазон символов. Означает любой один символ из заданного диапазона. Например, выражению [a-z] соответствует любая буква английского алфавита в нижнем регистре
[^m-z] Означает любой символ, не входящий в заданный диапазон. Например, выражению [^m-z] соответствует любой символ, не попадающий в диапазон символов от 'm' до 'z'
 Граница слова, т.е. позиция между словом и пробелом. Например, выражению er соответствует символ 'er' в слове 'never', но не в слове 'verb'
В Позиция внутри слова (не на границе). Например, выражению еа*rB соответствует подстрока 'ear' в 'never early'
d Символ, обозначающий цифру. Эквивалентно [0-9]
D Любой символ, кроме цифры. Эквивалентно [^0-9]

Метасимволы можно употреблять совместно, например, комбинация '.*' означает любое число любых символов.

Замечание

Более подробную информацию о регулярных выражениях можно найти, например, в документации Microsoft по языку VBScript.

В качестве примера использования регулярных выражений в листинге 5.18 приведен сценарий FindRegExp.js, в котором производится поиск в подкаталоге ForFind текущего каталога всех файлов, имена которых начинаются с символов 'П', 'А' или 'И' и имеют расширение txt.

Для получения доступа к каталогу ForFind в сценарии используется метод GetFolder объекта FileSystemObject:

//Создаем объект WshShell

WshShell=WScript.CreateObject('WScript.Shell');

//Создаем объект FileSystemObject

FSO=WScript.CreateObject('Scripting.FileSystemObject');

//Создаем объект Folder для доступа к подкаталогу ForFind

//текущего каталога

Folder = FSO.GetFolder(WshShell.CurrentDirectory+'\ForFind');

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

//Создаем регулярное выражение (объект RegExp)

RegEx=new RegExp('^[ПАИ].*.txt$', 'i');

Сам поиск и вывод имен найденный файлов производятся в функции FindFilesInFolder (Fold, RegEx). Здесь сначала инициализируются счетчик найденных файлов и переменная, в которой будут сохраняться имена найденных файлов, а также создается объект Enumerator (переменная Files) для доступа к файлам каталога Fold:

ColFind=0; //Счетчик найденных файлов

SFileNames=''; //Строка с именами файлов

//Создаем коллекцию файлов в каталоге Fold

Files=new Enumerator(Fold.Files);

Элементы коллекции просматриваются в цикле while:

//Цикл по всем файлам в коллекции

while (!Files.atEnd()) {

 Files.moveNext(); //Переходим к следующему файлу

}

Для текущего файла в коллекции выделяется его имя, которое затем с помощью метода test объекта RegExp проверяется на соответствие заданному регулярному

Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

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

Отметить Добавить цитату