4
Подписаться
1271
Подписчики

Систематическое изучение регулярных выражений (I): Основы

Создано: 2017-03-29 10:52:47, Обновлено: 2020-11-18 12:39:53
comments   2
hits   3010

Систематическое изучение регулярных выражений (I): Основы

Что такое правильные выражения? Регулярные выражения используют определенные заранее определенные символы и их комбинации, чтобы создать цепочку правил, используемых для выражания логики фильтрации.

  • Регулярными выражениями можно достичь следующих целей:
  给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
  可以通过正则表达式,从字符串中获取我们想要的特定部分。

Для того, чтобы упростить процесс обучения, я рекомендую Regextor, программное обеспечение для проверки правильных выражений, в частности, вы можете посмотреть мою статью, в которой я рекомендую много хорошего программного обеспечения для Mac.

Систематическое изучение регулярных выражений (I): Основы

Ниже мы рассмотрим правила правильных выражений:

  • #### Сопоставление обычных текстовых символов

Регулярные выражения могут содержать только обычный текст, который точно соответствует этому тексту. Например:

Правильное выражение:song Поделиться “Контакт: Xiaosongge, xiao Songge” Результаты поиска: xiaosongge,xiaoSongge Регулярные выражения по умолчанию отличаются от перво- и второстепенных букв, поэтому song не будет соответствовать “Song”. Однако большинство реализаций регулярных выражений предоставляют опцию не различать перво- и второстепенных букв.

  

  

  • #### Сопоставление произвольных символов

. используется для сопоставления произвольного символа, например:

Правильное выражение: c.t. Текст на английском языке: cat cet caaat dog Результаты после совпадения:cat cet caaat dog Анализ: c.t будет соответствовать строкам, начинающимся с “c” и заканчивающимся с “t”, с произвольными символами посередине.

Аналогичным образом, множество последовательных. может соответствовать множеству последовательных произвольных символов:

Правильное выражение: c..t Дополнительная информация: cat cet caat dog Результаты матча: cat cet caat dog

  

  

  • #### Сопоставление специальных символов

. в регулярном выражении содержит специальный смысл, является специальным символом. .\ также является специальным символом, который может служить для перевода специальных символов. Если вы хотите соответствовать действительному символу “ . ” , вам нужно..Знак . “ означает настоящий.

Правильные выражения: c.t Дополнительный текст: cat c.t dog Результаты поиска: catc.t dog Примечание: поскольку \ также является специальным символом, для того, чтобы совпасть с настоящим символом \, необходимо использовать две обратные скобки.\:

Правильные выражения: c\t Дополнительный текст: cat c\t dog Результаты поиска: catc\t dog

  

  

  • #### Использование наборов символов

Вы можете использовать только один из этих символов, но что делать, если вы хотите использовать несколько конкретных символов?[И [первый знак ].

Правильные выражения: c[ab]t Дополнительные тексты: cat cbt cet Результаты после совпадения:cat cbt cet Анализ:[ab] будет соответствовать “a” или “b”. Так что c[ab]t будет соответствовать “cat” и “cbt”, а не “cet”

  

  

  • #### Использование диапазона групп символов

В примере выше, если бы я хотел сопоставить cet,[Если я хочу, чтобы это соответствовало любым буквам, то я могу написать десятки букв. Это возможно, но слишком долго.[a-z]:

Правильные выражения: c[a-z]t Дополнить текст: cat cbt czt c2t Результаты после совпадения:cat cbt czt c2t Анализ:[a-z]t означает любую букву, начинающуюся на “c”, заканчивающуюся на “t” и промежуточную на буквы “a” - “z”.

Похожие разделы:

[0-9] и[0123456789] имеет такую же функцию. [A-F] совпадает с буквами от A до F. [A-Z] совпадает со всеми заглавными буквами от A до Z. [a-z] совпадает со всеми символами нижней буквы от a до z. [A-z] совпадает со всеми символами в ASCII от A до ASCII z (не только совпадает со всеми буквами, но и совпадает с символами в таблице ASCII от A до z, например[^ и т. д.) [A-Za-z0-9] Совпадает со всеми малыми буквами и цифрами.

  

  

  • #### Сопоставление несимволов

Набор символов обычно используется для указания набора символов, которые должны быть сопоставлены. Однако иногда вы хотите исключить набор символов, которые вы не хотите сопоставлять. Это может быть достигнуто путем отрицания набора символов.

Правильные выражения: c[^a-z]t Дополнить текст: cat cbt czt c2t cAt Результаты после матча: cat cbt czt c2t cAt Анализ: Это полная противоположность предыдущему примеру.[[a-z] соответствует всем маленьким буквам, а [^a-z] Совпадает со всеми символами, не являющимися малыми буквами.

Примечание: ^ символы отменяют совпадение всех символов в наборе символов.

  

  

  • #### Первобытные символы

Первичные символы имеют особое значение в регулярных выражениях, о которых мы уже говорили, например.[И] эти символы не могут непосредственно выражать свой смысл, например, не могут быть использованы непосредственно[Совпадает”.[“Используйте. чтобы соответствовать”.

Все мета-символы могут быть переведены с помощью обратной скобки, и после перевода символ будет соответствовать самому себе, а не его особому значению. Например,[Совпадение”.[ “:

Правильные выражения: a[b Текст, к которому нужно присоединиться:[b ab a[[b Результаты после совпадения:a[b ab a[[b Примечание: \ используется для перевода знака препинания, что также означает, что \ также является символом препинания. Поэтому, если нужно сопоставить истинный ” \ “, можно использовать\:

Правильные выражения: a\b Текст, к которому нужно присоединиться:\b a\b a[[b Результат после совпадения: a\b a\b a[[b

  

  

  • #### Пустые символы

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

Систематическое изучение регулярных выражений (I): Основы

Например, \r\n будет соответствовать комбинации обратной смены, и в Windows будет представлять собой файл смены. В Linux и Unix системах требуется только \n.

  

  

  • #### Соответствует определенному типу символов

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

Соответствующие цифры или не соответствующие цифрам Как уже было сказано выше,[0-9] можно сопоставить все цифры. Если вы не хотите сопоставлять ни одну цифру, вы можете использовать[В таблице ниже перечислены цифровые и нецифровые кластеры:

Систематическое изучение регулярных выражений (I): Основы

Регулярные выражения: c\dt Дополнить текст: cat c2t czt c9t Результаты поиска: catc2t czt c9t

Правильное выражение: c\Dt Дополнить текст: cat c2t czt c9t Результаты после совпадения:cat c2t czt c9t Сопоставление буквенных и небуквенных символов Другой часто используемый мета-символ класса - \w и \W:

Систематическое изучение регулярных выражений (I): Основы

Регулярные выражения: c\wt Дополнить текст: cat c2t czt c-t c\t Результаты после совпадения:cat c2t c-t c\t

Правильные выражения: c\Wt Дополнительные тексты: cat c2t c-t c\t Результат после совпадения: cat c2tc-t c\t Сопоставление пустого и непустого Последнее совпадение, которое мы увидим, - это пустые класса:

Систематическое изучение регулярных выражений (I): Основы

Регулярные выражения: c\st Ответить на сообщение Результаты поиска: catc t c2t c\t

Правильное выражение: c\St Ответить на сообщение Результаты после совпадения:cat c t c2t c\t

  

  

  • #### Соответствует одному или нескольким символам

Знак + означает соответствие одного или нескольких символов. Например, a будет соответствовать “a”, а a+ - одному или нескольким “a”.

Регулярное выражение: cat Текст, ожидающий совпадения: ct cat caat caaat Результаты после совпадения: ctcat caat caaat

Правильное выражение: ca+t Текст, ожидающий совпадения: ct cat caat caaat Результаты после совпадения: ctcat caat caaat При использовании + в наборе символов, символ + должен находиться за пределами набора:

Правильные выражения: c[0-9]+t Текст, ожидающий совпадения: ct c0t cat c123t Результаты после совпадения: ctc0t cat c123t Анализ:[0-9]+t означает строку, начинающуюся на “c”, заканчивающуюся на “t” и состоящую из одного или нескольких цифр.

Конечно же.[0-9+] также является законным правильным выражением, но оно обозначает набор символов, содержащих символы “0” - “9” и “+”.

В общем, мета-символы, такие как . и +, используются в качестве буквальных значений, когда используются в качестве наборов символов, поэтому нет необходимости переводить.[0-9+] и[0-9+[] выполняет ту же функцию.

Примечание: “+” - это мета-символ, для соответствия “+” требуется использовать перевод.+。

  

  

  • #### Соответствует нулю или более символов

Если вы хотите сопоставить ноль или больше символов, вы можете использовать*Первичный знак

Регулярное выражение: ca*t Ожидается сопоставление текста: ct cat caat cbt Результаты после совпадения:ct cat caat cbt Уведомление:Символ - это мета-символ. Для того, чтобы соответствовать “”, необходимо сделать перевод.*。

  

  

  • #### Сопоставление нулей или одного символа

? совпадает с нулями или с одним символом. Так, ? очень подходит для совпадения с одним из возможных символов в тексте.

Правильное выражение: ca?t Ожидается сопоставление текста: ct cat caat cbt Результаты после совпадения:ct cat caat cbt Примечание: символ ? - это заимствованный знак. Для того, чтобы совпасть с символом ?, необходимо перевести его.?。

  

  

  • #### Используйте количество совпадений

Регулярные выражения позволяют указать количество случаев совпадения. Количество случаев может быть указано между { и } . Примечание: { и } также являются заглавными знаками, и при использовании их в буквальном смысле требуется перевод.

Точное количество совпадений Чтобы указать количество совпадений, вы можете ввести число между { и }. Например, { 3 } будет совпадать с 3 раза предыдущими символами или набором:

Правильное выражение: ca{3}t Ct cat caaat cbt текст для сравнения Результаты поиска: ct catcaaat cbt Минимальное количество совпадений Мы также можем указать только минимальные значения, которые совпадают. Например, {2,} означает совпадение 2 или более раз:

Регулярное выражение: ca{1,}t Ct cat caaat cbt текст для сравнения Результаты после совпадения: ctcat caaat cbt Соответствие между измерениями Мы также можем использовать минимальные и максимальные значения для определения количества совпадений. Например, {2,3} означает минимум 2 совпадения и максимум 3 совпадения.

Правильное выражение: ca{2,3}t Ct cat caaat cbt текст для сравнения Результаты поиска: ct catcaaat cbt Итак? и {0,1} - это то же самое, что + и {1,} - это то же самое.

  

  

  • #### Не жадный матч

Посмотрите на следующие примеры:

Правильное выражение: s.*g Подпись: xiao song xiao song Результаты матча: xiao song xiao song Анализ: s.*Вместо того, чтобы сопоставлять две “songs”, как предполагалось, g сопоставляет все тексты между первой “s” и последней “g”.

Это потому что*И + - это жадные совпадения. То есть, правильные выражения всегда ищут наибольшую совпадение, а не наименьшее, что было преднамеренно разработано.

Но если вы не хотите быть жадным, то используйте не жадные сопоставления этих слов (как можно меньше символов).

Систематическое изучение регулярных выражений (I): Основы

*- Да. - Что?Не жадные версии, так что можно использовать? для изменения вышеприведенного примера:

Правильное выражение: s.?g Подпись: xiao song xiao song Результаты поиска: xiaosong xiao song Анализ: можно увидеть s.?g совпадает с двумя песнями.

  

  

  • #### Определение границы строки

Мета-символы, которые соответствуют границам строки, - это ^ и $, используемые для начала и конца строки соответственно.

↑ Использование:

Правильное выражение: ^xiao

Комментарии к статье: Xiaosong Результаты после совпадения:xiaosong

Текст, созванный для совместного использования: axiaosong Результаты после матча: axiaosong Анализ: ^xiao совпадает со строками, начинающимися с “xiao”.

$ используется следующим образом:

Официальное выражение: song$

Комментарии к статье: Xiaosong Результаты поиска: xiaosong

Текст на английском языке: Xiaosonga Результаты после матча: xiaoosonga Анализ: song$ совпадает со строкой, заканчивающейся словом “song”.

Общее использование:

Правильное выражение: ^[0-9a-zA-Z]{4,}$

Текст, ожидающий совпадения: a1b234ABC Результаты после совпадения:a1b234ABC

+a1b23=4ABC текст для сравнения Результат после сопоставления: + a1b23=4ABC Анализ:[0-9a-zA-Z]{4,}$ совпадает со строкой, состоящей из цифр или букв, и число цифр больше, чем равно четырех цифр.

Примечание: ^ если находится в начале множества, значит отрицательно; если находится вне множества, то будет соответствовать началу строки.[^0-9] и ^[0-9] различие.

  

  

  • #### Использование многострочного режима

Однако можно использовать многострочный режим: в многострочном режиме регулярный экспрессионный движок использует запятую в качестве разделителя строки, где ^ соответствует началу текста или началу строки, а $ - концу текста или концу строки.

Попробуйте изменить предыдущий пример:

Правильное выражение: ((?m) ^[0-9a-zA-Z]{4,}$

Текст, ожидающий совпадения: a1b234ABC +a1b23=4ABC ABC123456

Результаты после совпадения:a1b234ABC +a1b23=4ABC ABC123456 Анализ:[0-9a-zA-Z]{4,}$ будет соответствовать строкам, состоящим из цифр или букв, и число цифр больше, чем четыре цифры.

Примечание: если используется многострочный режим, то знак ((?m) должен быть помещен в начале регулярного выражения。 (? m) не поддерживается в большинстве реализаций регулярных выражений. Некоторые реализации регулярных выражений также поддерживают использование начало \A для сопоставления строки и конец \Z для сопоставления строки.

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

Копировано из книги iOS_小松哥