java tutorial - Регулярные выражения Java - учебник java - java programming - учиться java - java basics - java for beginners
1- Регулярные выражения (Regular expression)
1.1- Обзор
- Регулярное выражение (regular expression) определяет шаблон (pattern) поиска для строк. Регулярные выражения могут использоваться для поиска, редактирования и манипулирования текстом. Шаблон, определенный регулярным выражением, может совпадать один или несколько раз, или не совпадает с данным текстом.
- Аббревиатурой для регулярного выражения является регулярное выражение.
1.2- Поддержка языков
- Регулярные выражения (Regular expression) поддерживаются большинством языков программирования, например, Java, C #, C/C++ и т. Д. К сожалению, каждый язык поддерживающий регулярные выражения, несколько отличаются.
2- Принцип написания регулярного выражения
No | Регулярные выражения | Описание |
1 | . |
Подходит (match) любому символу |
2 | ^regex |
Регулярное выражение должно совпасть с начального пункта |
3 | regex$ |
Регулярное выражение должно совпасть в конце строки. |
4 | [abc] |
Создание определения, может подойти к a или b или c. |
5 | [abc][vz] |
Создание определения, может подойти к a или b или c, затем следует v или z. |
6 | [^abc] |
Когда появляется знак ^ как первый символ в квадратных скобках, он опровергает модель. Это может совпасть с любым символом, кромер a или b или c. |
7 | [a-d1-7] |
Рамки: подходит к строке между a и пунктом d и числом от 1 до 7. |
8 | X|Z |
Поиск X или Z. |
9 | XZ |
Поиск X а затем Z. |
10 | $ |
Проверка завершения строки. |
11 | \d |
Любое число, краткая форма [0-9] |
12 | \D |
Символ неявляющийся числом, краткая форма [^0-9] |
13 | \s |
Символ пробела, краткая форма[ \t\n\x0b\r\f] |
14 | \S |
Символ неявляющийся пробелом, краткая форма [^\s] |
15 | \w |
Символ букв, краткая форма[a-zA-Z_0-9] |
16 | \W |
Символ неявляющийся пробелом, краткая форма[^\w] |
17 | \S+ |
Некоторые символы неявляющиеся пробелом (Один или более) |
18 | \b |
Символ яляется a-z или A-Z или 0-9 или _, краткая форма [a-zA-Z0-9_] . |
19 | * |
Появляется 0 или много раз, краткая форма{0,} |
20 | + |
Появляется 1 или много раз, краткая форма{1,} |
21 | ? |
Появляется 0 или 1 раз, ? краткая форма {0,1} . |
22 | {X} |
Появляется X раз, {} |
23 | {X,Y} |
Появляется от X до Y раз. |
24 | *? |
* значит появляется 0 или много раз, добавление ? в конце значит поиск самого маленького совпадения. |
3- Специальные символы в Java Regex (Special characters)
- Специальные символы в Java Regex:
- \.[{(*+?^$|
- Символы, перечисленные выше, являются специальными символами. В Java Regex если вы хотите, чтобы он понял этот символ обычным способом, вы должны добавить \ впереди.
- Например сивол точки. Java regex понимает как любой символ, если вы хотите, чтобы он понимал как символ обычной точки, требуется знак \ впереди.
4- Использование String.matches(String)
Class String
- Используя метод String.matches (String regex), вы можете проверить, что вся строка ( String) соответствует регулярному выражению ( regex) или нет. Это самый распространенный способ. Рассмотрим следующие примеры:
StringMatches.java
Результат запуска примера:
java - джава - учиться java - учебник java -
cтрока матчи
- примеры java - java-программы
SplitWithRegex.java
- Результат запуска примера:
java - джава - учиться java - учебник java -
cплитc regex
- примеры java - java-программы
EitherOrCheck.java
- Результат запуска примера:
java - джава - учиться java - учебник java -
либо или проверить
- примеры java - java-программы
5- Использование Pattern и Matcher
- 1. Pattern это модельный объект, скомпилированная версия регулярного выражения. Он не имеет никакого публичного конструктора (constructor), и мы используем статический метод compile(String) для создания объекта, с аргументом регулярного выражения.
- 2. Matcher это способ сравнения совпадения вводной строки данных с созданным выше объектом Pattern. Этот класс не имеет публичный конструктор, и мы можем взять эот объект через метод matcher(String) обхекта Pattern. С вводным аргументом String являющимся документом для проверки.
- 3. Выражение PatternSyntaxException выбрасывается, если синтаксис регулярных выражений неверен.
Class Pattern:
Class Matcher:
- Ниже приведен пример использования Matcher и метода find() для поиска подстроки, соответствующей регулярному выражению.
java - джава - учиться java - учебник java -
матч и найти
- примеры java - java-программы
MatcherFind.java
- Результат запуска примера:
java - джава - учиться java - учебник java -
Поиск совпадений
- примеры java - java-программы
MatcherLookingAt.java
6- Группа (Group)
- Регулярное выражение может быть разделено на группы (group):
- Группы могут быть сплетены, поэтому нужно правило индексирвания группы. Весь pattern определяется как группа 0. Остальные описаниы как в изображении ниже:
java - джава - учиться java - учебник java -
Группа java
- примеры java - java-программы
- Из Java 7 вы можете определить группу с названием ( ? <Name>Pattern), и вы можете получить доступ к содержимому, совпадающему с Matcher.group(Stringname). Это делает Regex длиннее, но код более легкий и значимый.
- Группа словленная по названию также может быть доступна через Matcher.group(int group) с той же схемой индексирования.
- Внутренне, Java просто создает отображение от названия до индекса группы. Поэтому вы не можете использовать одно и то же название для того, чтобы словить две разные группы.
- Давайте посмотрим на пример с использованием названия для группы (Java> = 7)
NamedGroup.java
Результат запуска примера:
java - джава - учиться java - учебник java -
java именованной группы
- примеры java - java-программы
- Чтобы понять, вы можете посмотреть приведенную ниже иллюстрацию:
java - джава - учиться java - учебник java -
Декларация группы Java
- примеры java - java-программы
7- Использование Pattern, Matcher, Group и *?
- В некоторых ситуациях *? очень важно. Посмотрим на следующий пример:
java - джава - учиться java - учебник java -
cтрока regx
- примеры java - java-программы
- найдет наименьшее совпадение. Рассмотрим следующий пример: