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

Просмотр вперед и назад в Java

Иногда условие для поиска находится рядом с нужным фрагментом, но само не должно попадать в замену. Для этого в регулярных выражениях используют просмотр вперед и назад.

Позитивный просмотр вперед (?=...) проверяет, что после найденного фрагмента стоит нужный текст. В следующем примере заменяется только "aaa" перед "x":

import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "aaax aaab"; Pattern pattern = Pattern.compile("aaa(?=x)"); String res = pattern.matcher(txt).replaceAll("!"); System.out.println(res); } }

Негативный просмотр вперед (?!...) делает обратную проверку: после фрагмента не должно быть указанного текста. Теперь заменится "aaa" не перед "x":

import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "aaax aaab"; Pattern pattern = Pattern.compile("aaa(?!x)"); String res = pattern.matcher(txt).replaceAll("!"); System.out.println(res); } }

Позитивный просмотр назад (?<=...) проверяет текст перед фрагментом. В Java такие шаблоны записывают в строке как обычную регулярку:

import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "xaaa baaa"; Pattern pattern = Pattern.compile("(?<=x)aaa"); String res = pattern.matcher(txt).replaceAll("!"); System.out.println(res); } }

Негативный просмотр назад (?<!...) проверяет, что перед найденным фрагментом нет указанного текста:

import java.util.regex.Pattern; public class Main { public static void main(String[] args) { String txt = "xaaa baaa"; Pattern pattern = Pattern.compile("(?<!x)aaa"); String res = pattern.matcher(txt).replaceAll("!"); System.out.println(res); } }

Дана строка, содержащая имена функций:

String txt = "func1() func2 test()";

Найдите имена, после которых сразу идут круглые скобки, и выведите их списком.

Дана строка с ценами:

String txt = "$10 20 $30";

Найдите числа, перед которыми стоит знак доллара, и выведите их списком.

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