2011-11-20 30 views
1

我想要定義一個渴望的正則表達式,它能夠從平面文本文件中抓取完整的「標題」。 它應該以字母(不區分大小寫)開頭,最多可包含5個單詞,每個單詞可能包含數字。它應該在找到2個空格時結束。在Java中使用正則表達式抓取文本標題

我一次解析每一行,標題可以在行中的任何位置開始。

實施例:

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. 

一旦解析每一行中,只有在第一行應返回匹配「這是第一文檔標題」。

感謝

+1

如果所有標題都以日期開始,並檢查該日期,則會大大提高執行速度。 – flesk

+0

除非我誤會,否則您的標題有6個詞。 – FailedDev

+0

也看起來像你可以只分裂多個空白,並採取第二個元素。 –

回答

0

檢查,如果該行與日期開始,如果它不然後讀孔列

這裏是讀書正則表達式,如果該行與日期開始:^([0-9]{2}/[0-9]{2}/[0-9]{4})(.*?)\n

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)); 

更換ifwhile如果你需要在同一個字符串中找到更多的標題(這裏稱爲文本)。由於您的標題有6個單詞(不是5個),因此可以找到包含1-6個單詞的標題,如評論中提到的F​​ailedDev。

就像我在評論中提到的,Erik Larsson重複的那樣,逐行閱讀並將匹配定位到字符串的開頭會更快。