В этом уроке по регулярным выражениям вы научитесь сопоставлять один символ, встречающийся один раз, один символ, встречающийся несколько раз, или определенный набор символов.
В регулярных выражениях:
- Чтобы сопоставить любой символ, используйте шаблон с точкой «.».
- Чтобы сопоставить один символ(или несколько символов) ноль или более раз, используйте шаблон «.*».
- Чтобы сопоставить несколько символов или заданный набор символов, используйте классы символов.
1. Найдите любой символ
По умолчанию символ точки '.' в регулярном выражении соответствует одному символу независимо от того, какой это символ. Сопоставленный символ может быть буквой алфавита, числом или любым специальным символом.
Чтобы создать более осмысленные шаблоны, мы можем комбинировать символ точки с другими конструкциями регулярных выражений.
Шаблон | Описание |
---|---|
.(Точка) | Соответствует только одному символу. |
АБ | Соответствует только одному символу на втором месте в строке из 3 символов, которая начинается с «A» и заканчивается на «B». |
Pattern.compile(".").matcher("a").matches(); //истинаPattern.compile(".").matcher("ab").matches(); //ложьPattern.compile("AB").matcher("AIB").matches(); //истинаPattern.compile("AB").matcher("ABI").matches(); //ложьPattern.compile("A[abc]B").matcher("AaB").matches(); //истинаPattern.compile("A[abc]B").matcher("AkB").matches(); //ложь
2. Сопоставьте любой символ из указанного диапазона
Если мы хотим сопоставить диапазон символов в любом месте, нам нужно использовать классы символов с дефисом между диапазонами. Например, «[af]» будет соответствовать одному символу, который может быть «a», «b», «c», «d», «e» или «f».
Шаблон | Описание |
---|---|
[азбука] | Соответствует только одному символу из набора указанных символов. |
[аА] | Соответствует только одному символу «a», регистр не учитывается. |
[аф] | Соответствует только одному символу в диапазоне от «a» до «f». |
[аз] | Соответствует только одному строчному символу в диапазоне от «a» до «z». |
[А-З] | Соответствует только одному заглавному символу в диапазоне от «A» до «Z». |
[а-яА-Я] | Соответствует только одному символу в диапазоне от «a» до «z», без учета регистра. |
[0-9] | Соответствует только одному числу в диапазоне от «0» до «9». |
Pattern.compile("[a-f]").matcher("b").matches(); //truePattern.compile("[a-f]").matcher("g").matches(); //falsePattern.compile("[a-zA-Z]").matcher("a").matches(); //truePattern.compile("[a-zA-Z]").matcher("B").matches(); //truePattern.compile("[a-zA-Z]").matcher("4").matches(); //falsePattern.compile("[0-9]").matcher("9").matches(); //truePattern.compile("[0-9]").matcher("91").matches(); //false
3. Сопоставьте любой символ: ноль или более вхождений
Звездочка(*) используется с любым шаблоном регулярного выражения для сопоставления нуля или более вхождений в строки.
Шаблон | Описание |
---|---|
.* | Соответствует любому количеству символов, включая специальные символы. |
[0-9]* | Соответствует любому количеству цифр. |
[а-яА-Я]* | Соответствует любому количеству алфавитов. |
[а-зА-З0-9]* | Соответствует любому количеству буквенно-цифровых символов. |
https?://.*?(?:\s|$) | Сопоставляет URL-адреса из текста |
\(.*\) | Соответствует тексту в скобках |
Pattern.compile(".*").matcher("abcd").matches(); //truePattern.compile("[a-zA-Z]*").matcher("abcd").matches(); //truePattern.compile("[0-9]*").matcher("01234").matches(); //truePattern.compile("[a-zA-Z0-9]*").matcher("a1b2c3").matches(); //true