Page 271 - Браун Э. - Изучаем JavaScript. Руководство по созданию современных веб-сайтов - 2017
P. 271

const  input  =  "As  I  was  going  to  Saint  Ives " ;
       const  output  =  input . r eplace ( / \w{ 4 , } / i g,  ' * * * *  ' ) ;    1 1   "As  I  was  * * * *
                                                       1 1   t o   * * * *   * * * * "
          О намного более сложных методах замены мы узнаем далее в этой главе.


       П е р еработка вхо н ы х данных
                              д
          В самом простом случае регулярные выражения можно считать "средством поис­
       ка подстрок в пределах строки" (такая задача зачастую образно называется "поиском
       иголки в стоге сена"), и обычно это все, что требуется программисту. Однако огра­
       ничивая себя такими рамками вы будете не в состоянии понять истинную природу
       регулярных выражений и оценить всю их мощь для решения более сложных задач.
          Регулярное выражение можно также считать шаблоном для переработки входных
       строк. Побочным продуктом этого подхода становится процесс поиска соответствия
       строк.
          Чтобы лучше осмыслить работу регулярных выражений, стоит воспользоваться
       аналогией с популярной детской игрой, в которой вам предлагается выделить слова
       в таблице букв. Мы будем игнорировать диагональные и вертикальные соответствия;
       фактически давайте рассматривать только первую строку в этой словесной игре.
       Х  J  А  N  1  I  О  N  А  Т  U  R  Е  J  Х  Е  Е  1  N  Р
          Люди  очень хорошо играют в эту игру.  Мы можем посмотреть и сразу же найти
                                       I
       слова LION, NATURE и EEL (а также  O N, раз уж такое дело). Компьютеры, и регуляр­
       ные выражения, не столь умны. Давайте рассмотрим регулярные выражения на при­
       мере этой игры. Это позволить нам не только увидеть, как они работают, но и озна­
       комиться с ограничениями, о которых необходимо знать.
          Чтобы не усложнять, укажем обработчику регулярного выражения, что мы ищем
       слова LION, ION, NATURE и EEL. Другими словами, мы дадим ему готовые ответы и по­
       смотрим, сможет ли он их найти.
          Обработчик регулярного выражения начинает свой анализ с первого символа стро­
       ки - Х. Он определяет, что ни одно из искомых слов не начинается с символа Х и поэ­
       тому сигнализирует об "отсутствии соответствия': Однако на этом его работа не закан­
       чивается, и он начинает обработку следующего символа, J. Здесь ситуация та же. Затем
       переходит к символу А. После продвижения просмотренные обработчиком регулярного
       выражения символы считаются переработанными (consumed). Ничего интересного не
       происходит, пока ему не встретится буква L. Обработчик регулярного выражения заме­
       чает '�а, это может быть слово LION!" Поскольку с этого символа может начаться соот­
       ветствие заданным словам, обработчик не перерабатывает символ L. Это важный мо­
       мент для понимания. Обработчик движется дальше, встречая букву I, затем О, затем N.
       Т е перь он распознает соответствие. Это успех! Распознав соответствие, можно считать
       переработанным целое слово, таким образом, символы L, I ,   О  и N теперь относятся
       к переработанным. А дальше все становится еще интереснее.  Слова LION  и NATURE


       274      Глава 1 7. Регулярные выражения
   266   267   268   269   270   271   272   273   274   275   276