У меня есть это регулярное выражение:Как перенести последнее «начало с» с помощью регулярного выражения?
public static void main(String[] args) {
String str = "my name is my name is jack";
pattern = "my.*?jack";
pr = Pattern.compile(pattern);
matcher = pr.matcher(str);
while (matcher.find()){
list.add(matcher.group(0));
}
System.out.println (list.get(0));
}
который должен соответствовать от «моего», и «гнезда». На данный момент это соответствие по всей строке, которая не является сюрпризом. Я хочу достичь: матч на последнем «моем», если «jack» не найден.
Токовый выход: мое имя, меня зовут Джек
Wanted выход: меня зовут Джек.
Я знаю, что я могу подстроить *, чтобы получить последнее значение «my», так что первое событие полностью игнорируется, но оно только сломает другую строку, которую я могу использовать, - где все события но последний удаляется.
Любая идея, как достичь этого?
Спасибо. Надеюсь, мой вопрос не слишком расплывчатый или неясный. Пожалуйста, скажите мне, если это так.
* str.substring(str.lastIndexOf("my"))
Или избавиться от ленивого квантора вообще с 'мой ((\ Ь (:?!? Мой | домкрат) \ б).) * jack'. –