我正在尝试定义一个渴望的正则表达式,它能够从平面文本文档中获取完整的“标题”。 它应该以字母开头(不区分大小写),最多可包含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.
解析每一行后,只有第一行应返回匹配“这是第一个文档标题”。
由于
答案 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个),就像评论中提到的FailedDev一样。
就像我在评论中提到的那样,Erik Larsson重复说,逐行读取并将匹配锚定到字符串的开头会快得多。