Java Regex Вернуться последнее слово - PullRequest
0 голосов
/ 10 февраля 2020
String regex = "(some|text|)";

    Pattern pattern = Pattern.compile(regex, Pattern.CASE_INSENSITIVE);
    Matcher matcher = pattern.matcher(input);
    while (matcher.find())
    {
        int start = matcher.start();
        int end = matcher.end();
        System.out.print("Start index: " + start);
        System.out.print(" End index: " + end + " ");
        System.out.println(matcher.group());
    }

Привет, я хотел бы вернуть полную подстроку, включая конец слова. Например,

, если ввод:

String input = "I am a texte";

Я бы ожидал, что он вернет 7 11, я бы в основном хотел бы вернуть текст до "e", а не "t". Это возможно? Если да, то как это можно реализовать?

Ответы [ 2 ]

1 голос
/ 10 февраля 2020

Зачем использовать для этого регулярное выражение? Строка имеет lastIndexOf , чтобы найти последний индекс разделителя (например, пробел), и похоже, что вы не пытаетесь найти «слово», но «подстрока после последнего пробела» (которые не то же самое во многих, многих языках), поэтому, учитывая это, просто используйте:

String last = input.substring(input.getLastIndexOf(' ') + 1);

(необязательно в виде двух строк с проверкой, чтобы увидеть, является ли getLastIndexOf разумной позицией ) и готово?

0 голосов
/ 10 февраля 2020

вместо этого вы можете использовать следующее регулярное выражение:

  String regex = "(.[^\\s+].*some*.[^\\s]+|.[^\\s+].*text*.[^\\s]+)";

Это займет все слова, начинающиеся с некоторых или текста. Например: кто-то.

...