Что такое регулярное выражение? Регулярные выражения - это комбинации определенных предварительно определенных символов, которые формируют цепочку строки, которая используется для выражения логики фильтрации строки.
С помощью правильного выражения можно достичь следующих целей:
给定的字符串是否符合正则表达式的过滤逻辑(称作“匹配”);
可以通过正则表达式,从字符串中获取我们想要的特定部分。
Для того, чтобы упростить обучение, я рекомендую программное обеспечение для проверки правильных выражений Regextor, которое можно посмотреть в моей статье, в которой также рекомендовано много хорошего программного обеспечения для Mac.
Регулярные выражения могут содержать только обычный текст, который представляет собой точный совпадение этого текста; например:
Обычное выражение:song
Текст песни: Xiaosongge, xiaoSongge
Результаты сопоставления: xiaosong
Ge, Xiao Songge
По умолчанию регулярные выражения пишутся в больших и малых размерах, поэтому song не совпадает с
. Используется для сопоставления любых символов, например:
Регулярное выражение: c.t
В ожидании соответствия текст: cat cet caaat dog
Результаты сопоставления:cat
cet
Каат Дог
Анализ: c.t будет совпадать со строкой, которая начинается с "c" и заканчивается "t", а в середине - с любым символом.
同理,多个连续的.可以匹配多个连续的任意字符:
Обычное выражение: c...t
В ожидании соответствия текст: cat cet caat dog
Результаты сопоставления: cat cetcaat
собака
. содержит особое значение в правильных выражениях, является особым символом.. также является особым символом, который может играть преобразовательную роль в отношении особых символов.. если вы хотите соответствовать, это настоящий ".
Регулярное выражение: c.t
В ожидании совпадения текст: cat c.t dog
Результаты сопоставления: catc.t
Собака
Примечание: поскольку \ также является специальным символом, для того, чтобы соответствовать истинному \, необходимо использовать две обратные скобки \:
Обычное выражение: c\t
В ожидании совпадения текст: cat c\t dog
Результаты сопоставления: catc\t
собака
Выше говорилось. Можно сопоставить любой символ, но что, если я хочу сопоставить несколько конкретных символов?
Обычное выражение: c[ab]t
В ожидании совпадения текст: cat cbt cet
Результаты сопоставления:cat
cbt
Cet
Анализ: [ab] совпадает с "a
В приведенном выше примере, что делать, если я хочу сопоставить cet и добавить один в [?], а если я хочу сопоставить любые буквы малой буквы, я напишу десятки? Хотя это возможно, но это слишком долго.
Обычное выражение: c[a-z]t
В ожидании соответствия текст: cat cbt czt c2t
Результаты сопоставления:cat
cbt
czt
c2t
Анализ: c[a-z]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 cztc2t
cAt
Анализ: это прямо противоположно предыдущему примеру. [a-z] совпадает со всеми буквы, написанными малой буквой, в то время как [^a-z] совпадает со всеми символами, не написанными малой буквой.
Обратите внимание, что ^ - это отмена совпадения всех символов в наборе символов.
В обычных выражениях у метахарактеров есть особое значение, о котором мы уже говорили несколько метахарактеров, например..................................................................................................................................................................
Все метахарактеры могут быть предшествованы обратным кристаллическим преобразованием, после которого характер будет соответствовать самому себе, а не его специальному значению.
Обычное выражение: a[b]
В ожидании совпадения текста: a[b ab a[[b
Результаты сопоставления:a[b
ab a[[b
Примечание: \ используется для преобразования элементарных символов, что также означает, что \ также является мета-характером. Так что если вам нужно сопоставить истинное \, вы можете использовать \:
Регулярное выражение: a\b
В ожидании совпадения текста: a\b a\b a[[b
Результаты сопоставления: a\ba\b
a[[b
Иногда вам может понадобиться сопоставить неприпечатанные в тексте пробелы. Например, вы хотите найти все символы Tab или все символы замены. Вы можете использовать специальные мета-чертежи в таблице:
Например, \r\n будет совпадать с комбинацией обратного переключения, что в Windows означает переключение файла.
Существуют специальные мета-символы, которые можно использовать для сопоставления с обычными наборами символов. Эти мета-символы называются классами сопоставления. Вы найдете их удобными в использовании.
Совпадение чисел или нечисел Выше говорилось, что можно сопоставить все числа. Если вы не хотите сопоставить ни одного числа, вы можете использовать [^0-9]. Ниже приведена таблица, в которой перечислены цифровые и нецифровые элементы класса:
Обычное выражение: c\dt
В ожидании соответствия текст: cat c2t czt c9t
Результаты сопоставления: catc2t
cztc9t
Обычное выражение: c\Dt
В ожидании соответствия текст: cat c2t czt c9t
Результаты сопоставления:cat
c2tczt
c9t
Сопоставление алфавитных и неалфавитных символов
Еще один обычный классный метокрактер - \w и \W:
Обычное выражение: c\wt
В ожидании совпадения текст: cat c2t czt c-t c\t
Результаты сопоставления:cat
c2t
С-т с\т
Обычное выражение: c\Wt
В ожидании совпадения текст: cat c2t c-t c\t
Результаты сопоставления: cat c2tc-t
c\t
Сопоставление пустоты и не пустоты
Последнее совпадение, с которым мы столкнемся, - это белый класс:
Обычное выражение: c\st
В ожидании совпадения текст: cat c t c2t c \ t
Результаты сопоставления: catc t
c2t c\t
Обычное выражение: c\St
В ожидании совпадения текст: cat c t c2t c\t
Результаты сопоставления:cat
c tc2t
c\t
Мета + означает совпадение одного или нескольких символов. Например, a будет совпадать с "a", а a + совпадает с одним или несколькими "a".
Обычное выражение: cat
В ожидании совпадения текст: ct cat caat caaat
Результаты сопоставления: ctcat
Кааааа
Обычное выражение: ca+t
В ожидании совпадения текст: ct cat caat caaat
Результаты сопоставления: ctcat
caat
caaat
Когда + используется в наборе символов, символ + необходимо поместить за пределами набора:
Обычное выражение: c[0-9]+t
В ожидании совпадения текст: ct c0t cat c123t
Результаты сопоставления: ctc0t
кошкаc123t
Анализ: c[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.*g не совпадает с двумя песнями, как предполагается, а совпадает со всем текстом между первым песней s и последним g.
Это потому, что * и + - это жадные совпадения. То есть, регулярные выражения всегда ищут наибольшую, а не наименьшую совпадение, что преднамеренно сделано.
Но если вы не хотите, чтобы метры соответствовали, используйте эти критерии для метры без метры (сравните как можно меньше символов).
Да, конечно.Если вы хотите, чтобы ваш сайт стал более доступным для пользователей, вы можете использовать *?
正则表达式:s.?g
Ожидание совпадения текст: xiao song xiao song
Результаты сопоставления: xiaosong
Суаоsong
分析:可以看到s.? g совпадает с двумя песнями.
Метакристаллы, с которыми совпадают границы строки, - это ^ и $, которые используются для начала и конца строки, соответственно.
^ Используется следующим образом:
Обычное выражение: ^ xiao
В ожидании совпадения текст:xiaosong
Результаты сопоставления:xiao
Песня
В ожидании соответствия текст: axiaosong Сравнение: axiaosong Анализ: ^xiao совпадает со строкой, начинающейся с "xiao".
$ используется следующим образом:
Официальное выражение: song$
В ожидании совпадения текст:xiaosong
Результаты сопоставления: xiaosong
В ожидании совпадения текст:xiaosonga Результаты сопоставления: Xiaosonga Анализ: песня $ совпадает со строкой, заканчивающейся на "song".
Совместное использование:
Обычное выражение: ^ [0-9a-zA-Z] {4,} $
В ожидании соответствия текст: a1b234ABC
Результаты сопоставления:a1b234ABC
Текст для сопоставления: +a1b23=4ABC Результат сопоставления: +a1b23 = 4ABC Анализ: ^[0-9a-zA-Z]{4,} $ содержит совпадение числа или буквы, и число цифр больше, чем четыре цифры строки;
Примечание: ^ означает отрицательное, если оно находится в начале множества; если оно находится вне множества, то оно будет соответствовать началу строки.
Однако можно включить многострочный режим. В многострочном режиме, регулярные экспресс-двигатели используют переменную строку как разделитель строки, ^ - для начала текста или начала строки, а $ - для конца текста или конца строки.
Измените предыдущий пример:
Обычное выражение: ((?m) ^ [0-9a-zA-Z]{4,}$
В ожидании соответствия текст: a1b234ABC +a1b23 = 4ABC ABC123456
Результаты сопоставления:a1b234ABC
+a1b23=4ABCABC123456
Анализ: ((?m) ^ [0-9a-zA-Z]{4,} $ будет совпадать с числом или буквой в каждой строке, и число цифр будет больше, чем четыре цифры в строке.
Примечание: если используется многострочный режим, то ((?m) должен быть помещен в начале регулярного выражения. (?m) не поддерживается в большинстве реализаций регулярных выражений. Некоторые реализации регулярных выражений также поддерживают использование \A для начала и \Z для конца соответствующей строки. Если это поддерживается, то эти метахарактеры выполняют ту же функцию, что и ^, $.
Переведено с английского языка