Следите за новинками
в нашем Telegram канале. Жми, чтобы подписаться:)
⊗jvSpRgOC 75 of 322 menu
◀ ▶

Команда или в регулярках Java

Команда '|', которая представляет собой более мощный вариант 'или' по сравнению с командой [ ]. Данная команда позволяет разделить регулярку на несколько частей. При этом искомое может попасть либо под одну часть регулярки, либо под другую. Посмотрим на примерах.

В данном примере шаблон поиска такой: три буквы 'a' или три буквы 'b':

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "aaa bbb abb"; Pattern pattern = Pattern.compile("a{3}|b{3}"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

Результат выполнения кода:

"! ! abb"

В данном примере шаблон поиска такой: три буквы 'a' или от 1 и более букв 'b':

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "aaa bbb bbbb bbbbb axx"; Pattern pattern = Pattern.compile("a{3}|b+"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

Результат выполнения кода:

"! ! ! ! axx"

В данном примере шаблон поиска такой: одна или более буквы или три цифры:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "a ab abc 1 12 123"; Pattern pattern = Pattern.compile("[a-z]+|\\d{3}"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

Результат выполнения кода:

"! ! ! 1 12 !"

Вертикальная черта может делить регулярку не на две части, а на любое количество частей:

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "aaa bbb ccc ddd"; Pattern pattern = Pattern.compile("a+|b+|c+"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

Результат выполнения кода:

"! ! ! ddd"

Если вертикальная черта стоит внутри круглых скобок, то 'или' работает только внутри этих скобок.

Для примера давайте найдем строки по следующему шаблону: в начале стоит или 'a', или 'b' один или более раз, а потом две буквы 'x':

import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "axx bxx bbxx exx"; Pattern pattern = Pattern.compile("(a|b+)xx"); Matcher matcher = pattern.matcher(txt); String res = matcher.replaceAll("!"); System.out.println(res); } }

Результат выполнения кода:

"! ! ! exx"

Дана строка:

public class Main { public static void main(String[] args) { String txt = "aeeea aeea aea axa axxa axxxa"; } }

Напишите регулярку, которая найдет строки по шаблону: по краям стоят буквы 'a', а между ними - или буква 'e' любое количество раз или буква 'x' любое количество раз.

Дана строка:

public class Main { public static void main(String[] args) { String txt = "aeeea aeea aea axa axxa axxxa"; } }

Напишите регулярку, которая найдет строки по шаблону: по краям стоят буквы 'a', а между ними - или буква 'e' два раза или буква 'x' любое количество раз.

← →
↑
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить