如何匹配文本中的单行,不包括之前和之后的行?

时间:2012-01-18 23:52:13

标签: java regex

我正在尝试一种模式来获取此文本中的最后一行星。

我带来的模式非常简单。它匹配第一行和最后一行

(* {5,})

但是,我只需要最后一行。 这是文字:

这里有一些文字

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

  *                                  *





  *                                  *


  * Source: Test                     *


  *                                  *


  * Amount: $6.50                    *


  *                                  *


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

2 个答案:

答案 0 :(得分:0)

您可以使用\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 * ** * ** * ** * ** * ** * ****

答案 1 :(得分:0)

使用与字符串结尾匹配的模式'\*{5,}$'。但是你需要双击反斜杠,所以\\*{5,}$

Pattern.compile("\\*{5,}$")