Как мне сопоставить одну строку в тексте, исключая то, что до и после? - PullRequest
0 голосов
/ 19 января 2012

Я пытаюсь использовать шаблон, чтобы получить последнюю строку звезд из этого текста.

Шаблон, с которым я пришел, довольно прост.Он соответствует первой и последней строкам начала

(* {5,})

Однако мне нужна только последняя строка.Вот текст:

Здесь немного текста

  ************************************

  *                                  *





  *                                  *


  * Source: Test                     *


  *                                  *


  * Amount: $6.50                    *


  *                                  *


  ************************************

Ответы [ 2 ]

0 голосов
/ 19 января 2012

Использовать шаблон '\*{5,}$', который соответствует концу строки. Но вам нужно дважды убрать обратную косую черту, поэтому \\*{5,}$.

Pattern.compile("\\*{5,}$")
0 голосов
/ 19 января 2012

Вы можете определить конец строки с помощью \z.

Таким образом, в формате Ruby, это бы сработало:

"\\*{5,}\\z"

Приветствия!

Это работает для меня, я проверял это здесь: http://www.regexplanet.com/simple/index.html

ОК, это действительно работает:

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

class Untitled {
    public static void main(String[] args) {
        String test = " ************************************\n" +
          "*                                  *\n" +
          "*                                  *\n" +
          "* Source: Test                     *\n" +
          "*                                  *\n" +
          "* Amount: $6.50                    *\n" +
          "*                                  *\n" +
          "************************************";

        Pattern pattern = Pattern.compile("\\*{5,}\\z");
        // In case you would like to ignore case sensitivity you could use this
        // statement
        // Pattern pattern = Pattern.compile("\\s+", Pattern.CASE_INSENSITIVE);
        Matcher matcher = pattern.matcher(test);
        // Check all occurance
        while (matcher.find()) {
            System.out.print("Start index: " + matcher.start());
            System.out.print(" End index: " + matcher.end() + " ");
            System.out.println(matcher.group());
        }
    }
}

Вывод: Начальный индекс: 260 Конечный индекс: 296 ********************

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...