Java Regex移动到字符串中的某个位置

时间:2015-11-28 02:42:17

标签: java regex

我有一些像这样的字符串:

Title
First
Second
Third

Title 2
First 
Second
Third

我希望能够直接跳到Title 2,然后抓住First,Second,Third。我知道如何抓住东西(使用Pattern / Matcher),但不知道如何跳转到Title 2。

2 个答案:

答案 0 :(得分:1)

这个正则表达式将抓住标题2'以及它下面的3行(如你所愿),并将它们放在匹配组中。您可以使用Pattern / Matcher读取匹配组。

Title 2\n(.*)\n(.*)\n(.*)

希望这有帮助!

答案 1 :(得分:1)

您可以简单地使用String#split方法(此处为a javadoc)并使用新的线路符号\\n将文本拆分为此处的行,迭代生成的数组行的字符串表示,例如,在某些对象表示中收集它们,就像带有字幕的Title对象列表一样。在每个空行后创建一个新标题。有点像这样:

String[] lines = str.split("\\n");

List<List<String>> titles = new LinkedList<>();

List<String> title = new LinkedList<>();
titles.add(title);
for (String line : lines) {
    if (line.trim().isEmpty()) {
        title = new LinkedList<>();
        titles.add(title);
        continue;
    }

    title.add(line);
}

System.out.println(titles.get(1));

如果没有传递给您,您必须查看(?:)正则表达式运算符,它是非捕获组。您可以在某种模式中使用它来确定您的标题2仅在空行之后(此空行用于非捕获组)。然后只需指定您希望从文本中接收的论坛。