Java matcher.find() не возвращает одно и то же значение несколько разJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java matcher.find() не возвращает одно и то же значение несколько раз

Сообщение Anonymous »

Недавно я проверял работу регулярных выражений в JAVA. Я уже знаком с Regex в JavaScript или Python.
Но в Java я столкнулся с проблемой с операцией matcher.find().
Java matcher.find() не работает второй или следующее явление. Разработчики описывают это в Интернете гораздо больше и пытаются понять это по-другому.
Мне нужен простой ответ, как использовать matcher.find() несколько раз.
Существует простой способ сохранить matcher.find() в переменной и использовать ее. переменная снова и снова. Но я не хочу идти по этому пути.
Это пример кода, в котором попытка найти дочерний элемент и его непосредственного родительского элемента с помощью операции регулярного выражения.

Код: Выделить всё

import java.util.regex.Matcher;
import java.util.regex.Pattern;
import java.util.List;
import java.util.Arrays;

public class Main {
public static void main(String[] args) {
List familyHiearchy = Arrays.asList(
"Level_00",
"Level_00/Level_01_first",
"Level_00/Level_01_second",
"Level_00/Level_01_first/Level_02_first"
);

for (String ele : familyHiearchy) {
Matcher matcher_child = ((Pattern) Pattern.compile("\\w+$", Pattern.CASE_INSENSITIVE)).matcher(ele);
Matcher matcher_parent = ((Pattern) Pattern.compile("\\w+(?=/\\w+$)", Pattern.CASE_INSENSITIVE)).matcher(ele);
System.out.println("-----------------");

// Hide the code because I can't use `matcher.find()` multiple times
// if(matcher_child.find() && matcher_parent.find()) {
//     System.out.println("Both Child and Parent are available");
// }

if (matcher_child.find()) {
String childName = matcher_child.group();
System.out.println("Name : " + childName);
}
System.out.println("matcher_child.find() " + matcher_child.find());

if (matcher_parent.find()) {
String parentName = matcher_parent.group();
System.out.println("Parent Name : " + parentName);
}
System.out.println("matcher_parent.find() " + matcher_parent.find());
}
}
}
Это пример вывода, в котором мы пытаемся объяснить проблему.
Изображение
Я не хочу хранить значение matcher.find() в каком-то параметре. Но я хочу снова и снова использовать метод matcher.find().
Если вас интересует Java Regex, подскажите, как это сделать?
Пример кода: туториалпойнт

Подробнее здесь: https://stackoverflow.com/questions/792 ... iple-times
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»