А как найти символы и строки с помощью языка JavaScript

CMS

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

Рассмотрим сценарий, который выполняет сравнение с шаблоном. Он позволяет искать вхождения последовательностей одного и того же символа. Чтобы найти два одинаковых символа без других символов (включая пробельные) между ними, можно просто использовать шаблон, в котором нужный символ записан дважды. В качестве примера рассмотрим, как можно найти последовательности символов, где символ встречается точно два раза — например, двойная "мм" в таких словах. Формулировка задачи для такого сравнения выглядит следующим образом: "найти все вхождения строчной буквы "м", за которой непосредственно следует еще одна буква "м". Поиск будет выполняться в файле содержащем такой текст : "программы для программирования контроллеров gate 4000"

Каждая пара символов представляет собой метасимвол, который означает цифру от 0 до 9 включительно. Метасимвол не означает обратный слэш, за которым следует строчная буква. Обратите внимание, что метасимвол существенно отличается по значению от литеральных символов, которые применялись в рассмотренных раньше шаблонах. Символ А в шаблоне соответствует только букве А, а метасимвол d соответствует любой цифре 0, 1, 2, 3, 4, 5, б, 7, 8 или 9. Метасимвол часто соответствует классу символов.

В данном случае метасимвол d соответствует классу символов — цифрам. Шаблон ddd соответствует трем последовательным цифрам, т.е. 012, 234, 345, 999 и сотням других трехзначных чисел.

Сравнение с трехзначными числами

Предположим, что нам нужно найти последовательность, состоящую из трех цифр. Проще говоря, нужно найти трехзначное число. Несколько более формально это можно выразить так: " найти цифру, проверить, является ли цифрой следующий символ, и если да, то проверить, является ли цифрой третий символ за ними".

Метасимвол означает одну цифру; значит, как было сказано, для поиска трех цифр подряд можно использовать шаблон. Вы можете создать и свои тестовые строки. Обратите внимание, что шаблон ddd соответствует любой последовательности трех цифр подряд, но не одиночным цифрам и не парам цифр. Механизм обработки регулярных выражений ищет цифровой символ. Если первый рассматриваемый символ не является цифровым, механизм переходит к следующему символу тестовой строки и проверяет его. Если это не цифра, он переходит дальше и снова выполняет проверку. Если найдено соответствие первому вхождению d, то механизм обработки регулярных выражений сдвигается на следующий символ и проверяет, является ли и он цифровым. Если да, то на соответствие метасимволу d (т.е. цифре) проверяется третий символ. Если три символа подряд являются цифровыми, то найдено соответствие регулярному выражению ddd.

Программа Komodo Regular Expression Toolkit.

Действие этого процесса сравнения можно наблюдать с помощью Komodo Regular Expression Toolkit. Откройте Komodo, Regular Expression Toolkit и удалите старую информацию из полей ввода. Введите "gate 4000 сетевой контроллер" в поле тестируемой строки, а в поле регулярного выражения — шаблон d. Вы увидите, что выделена (т.е. найдена) первая цифра — 4. Добавьте в поле регулярного выражения еще одно d — теперь будут выделены цифры 40, наконец, добавьте третье d, чтобы завершить регулярное выражение. Вы можете опробовать этот шаблон с другими строками. Поэкспериментируйте со своими тестовыми строками, содержащими цифры, и посмотрите, какие символы будут выделены.

В Komodo Regular Expression Toolkit для правильного обнаружения соответствия может понадобиться добавить после тестовой строки пробел. Почему в описанном примере применялся JavaScript ? Да потому, что OpenOffice.org Writer не содержит метасимвола d. В нем сравнение с цифрами выполнить не так легко. Как видно на А.9, в OpenOffice.org Writer соответствие не обнаружено. Для цифровых символов в OpenOffice.org Writer применяется нестандартный синтаксис, в котором нет метасимвола d. Пока достаточно сказать, что регулярное выражение дает тот же результат, что и шаблон ddd, т.е. шаблон означает то же самое, что и ddd. Поиск трех цифр подряд в файле АВС12txt с помощью этого класса символов показан на АЛО. Утилита findstr также не знает метасимвол d, так что если вы захотите воспользоваться ей для сравнения с образцом, то придется использовать в командной строке класс символов следующим образом "gate 4000 ". Соответствия будут найдены в четырех строках. Приведенная командная строка работает правильно, только если файл находится в текущем каталоге. Если он находится в другом каталоге, то в командной строке необходимо указать путь файла. В следующем разделе статьи будут объединены освоенные вами приемы, чтобы находить сочетания буквально указанных символов и последовательностей символов.

Поделитесь ссылкой на пост в сервисы:

Оцените запись:

Комментарии

Пока нет комментариев.

Прокомментировать

(обязательно)

(обязательно)