Эта статья призвана рассказать самые скучные базовые знания на самом популярном языке.
Схема статьи:
- метасимвол
- повторить квалификатор
- группировка
- побег
- состояние или
- интервал
Регулярные выражения можно использовать почти во всех языках, будь то JavaScript во внешнем интерфейсе или Java или C# во внутреннем интерфейсе. Все они предоставляют соответствующие интерфейсы/функции для поддержки регулярных выражений.
Но самое удивительное:Независимо от того, какой компьютерный язык вы выберете в университете, вам не нужно будет проходить курс по регулярным выражениям.Прежде чем вы начнете изучать регулярные выражения, вы можете только посмотреть эти обычные мастера и написать строку чужих текстов, вместо того, чтобы выполнять какую-то проверку содержимого. с большим кодом if else.
Если вам это нравится, то начинайте учиться, но когда вы публикуете на Baidu кучу актуальных материалов, вы обнаружите, что все без исключения крайне скучно и сложно учиться (честно говоря, у Илиджуна тогда тоже был такой же менталитет 😂😂 ).
Далее я постараюсь рассказать о закономерностях более популярно, чтобы вы могли самостоятельно написать несколько простых закономерностей после их прочтения.
1. Мета-персонажи
У всего есть источник, как и у регулярности Метасимволы являются основным элементом построения регулярных выражений.
Начнем с нескольких часто используемых метасимволов:
метасимвол | инструкция |
---|---|
. | соответствует любому символу, кроме новой строки |
\w | Совпадение с буквами или цифрами, символами подчеркивания или китайскими иероглифами |
\s | соответствует любому пробелу |
\d | совпадение чисел |
\b | соответствовать началу или концу слова |
^ | соответствует началу строки |
$ | Соответствует концу строки |
После того, как у нас есть метасимволы, мы можем использовать эти метасимволы для написания некоторых простых регулярных выражений,
Например:
- Совпадение строк, начинающихся с abc:
1\babc或者^abc
- Совпадение с 8-значным номером QQ:
1^\d\d\d\d\d\d\d\d$
- Сопоставьте номер мобильного телефона с 11 цифрами, начинающимися с 1:
1^1\d\d\d\d\d\d\d\d\d\d$
2. Повторить квалификатор
С помощью метасимволов вы можете написать много регулярных выражений, но если вы будете осторожны, вы можете обнаружить, что регулярные выражения, написанные другими, кратки и ясны, в то время как регулярные выражения, написанные Лилиджун, состоят из кучи беспорядочных и повторяющихся метасимволов. . Разве регулярное выражение не позволяет справиться с этими повторяющимися метасимволами?
Ответ - да!
Чтобы справиться с этими проблемами повторения, некоторые квалификаторы повторения в регулярных выражениях заменяются соответствующими квалификаторами.Давайте посмотрим на некоторые квалификаторы:
грамматика | инструкция |
---|---|
* | Повторить ноль или более раз |
+ | повторить один или несколько раз |
? | повторить ноль или один раз |
{n} | повторить n раз |
{n,} | Повторить n или более раз |
{n,m} | Повторить от n до m раз |
С помощью этих квалификаторов мы можем преобразовать предыдущие регулярные выражения, например:
- Совпадение с 8-значным номером QQ:
1^\d{8}$
- Сопоставьте номер мобильного телефона с 11 цифрами, начинающимися с 1:
1^1\d{10}$
- Совпадающие номера банковских карт состоят из 14-18 цифр:
1^\d{14,18}$
- Соответствует строкам, начинающимся с a и заканчивающимся нулем или более b
1^ab*$
3. Группировка
Из вышеприведенного примера (4) видно, что квалификатор * действует на символ, ближайший слева от него, поэтому вопрос в том, что, если я хочу, чтобы ab одновременно определялся *?
В регулярных выражениях круглые скобки () используются для группировки, то есть содержимое в круглых скобках используется как единое целое.
Поэтому, когда мы хотим сопоставить несколько прессов, мы можем сделать это
Например: совпадающая строка содержит 0 или более букв ab в начале:
1^(ab)*
4. Побег
Мы видим, что регулярные выражения сгруппированы круглыми скобками, поэтому возникает проблема:
Если сравниваемая строка сама содержит круглые скобки, является ли это конфликтом? То, что должно быть сделано?
В ответ на эту ситуацию регулярное выражение предоставляет метод escape, то есть для экранирования этих метасимволов, квалификаторов или ключевых слов в обычные символы, метод очень прост, то есть добавляет косую черту перед символами, которые нужно экранировать, то есть , \ возможно.
Например: для совпадения, начинающегося с (ab):
1^(\(ab\))*
5. Условия или
Возвращаясь к нашему сопоставлению номеров мобильных телефонов, мы все знаем, что внутренние номера поступают из трех основных сетей, и все они имеют свои собственные сегменты номеров.Например, China Unicom имеет 130/131/132/155/156/185/186. /145/176 Сегмент со знаком равенства, если мы позволим нам сопоставить номер Unicom, то в соответствии с закономерностью, которую мы узнали до сих пор, запуск должен быть невозможен, потому что есть некоторые сопоставленные условия, то есть «или», тогда как это выражается в закономерности. Что насчет "или"?
Регулярка использует символ | для представления или, также называемого условием перехода, когда любое из условий перехода в регулярности выполняется, это будет считаться успешным совпадением.
Тогда мы можем справиться с этим с условием ИЛИ
1^(130|131|132|155|156|185|186|145|176)\d{8}$
6. Интервал
Посмотрите на приведенный выше пример, вы видите какую-либо закономерность? Есть ли еще стремление к упрощению?
На самом деле есть
Регулярное выражение предоставляет метасимвол в скобках [] для представления условий интервала.
- Ограничение от 0 до 9 можно записать как [0-9]
- Ограниченный A-Z записывается как [A-Z]
- Ограничение определенных номеров [165]
Мы также изменили приведенный выше регулярный код на этот:
1^((13[0-2])|(15[56])|(18[5-6])|145|176)\d{8}$
Ну, основное использование регулярных выражений находится здесь. На самом деле, у него много точек знаний и метасимволов. Здесь мы перечисляем только некоторые метасимволы и синтаксис. Для тех, кто хочет изучить регулярные выражения, но не может читать документации, сделайте краткий туториал начального уровня.После прочтения этого туториала, даже если вы не можете написать регуляр высокого уровня, вы сможете хотя бы написать какой-нибудь простой регуляр или понять регулярку, написанную другими.Теперь, если вам нужен продвинутый обучения, то вы должны хорошо совершенствоваться.