使用Java中的正则表达式抓取文本标题

时间:2011-11-20 19:18:15

标签: java regex

我正在尝试定义一个渴望的正则表达式,它能够从平面文本文档中获取完整的“标题”。 它应该以字母开头(不区分大小写),最多可包含5个单词,每个单词可能包含数字。它应该在找到2个空格时结束。

我一次解析每一行,标题可以从行中的任何位置开始。

示例:

11/20/2011      this is the 1st document title   written by:user
Hi,
This is a sample text which is not the title since it does not end with 2 spaces.

解析每一行后,只有第一行应返回匹配“这是第一个文档标题”。

由于

2 个答案:

答案 0 :(得分:0)

检查行是否以日期开头,如果是,则读取孔行

如果行以日期开头,那么这是用于阅读的正则表达式:^([0-9]{2}/[0-9]{2}/[0-9]{4})(.*?)\n

答案 1 :(得分:0)

我不建议这样做,但如果你必须:

Pattern pattern = Pattern.compile("\\s(\\w+(?:\\s\\w+){0,5})\\s{2}", Pattern.MULTILINE);
Matcher match = pattern.matcher(text);

if (match.find())
    System.out.println(match.group(1));

如果您需要在同一字符串中找到更多标题(此处称为文本),请将if替换为while。这会找到1-6个单词的标题,因为你的标题有6个单词(不是5个),就像评论中提到的F​​ailedDev一样。

就像我在评论中提到的那样,Erik Larsson重复说,逐行读取并将匹配锚定到字符串的开头会快得多。