2015-07-20 17 views
0

對於一個具體的例子,我想把一個文本文檔分解成句子。捕捉任何字符的字符串,後跟標點符號: - 使用正則表達式匹配內容還是分隔符更好?

  • (.|\n)*?([!?.]\s+|[\n]{2,}|$)

    • [!?][\s]*|[.\n][!?\s]+[.!?\s]*這標點符號/空白(分隔符句子之間的東西)匹配:我使用的是後續的正則表達式(可能仍然需要扭捏)考慮或換行符(全句 - 我想要的內容)

    通常,哪種方法是首選?在我的具體情況下,我想跟蹤每個句子的開始和結束索引,所以我不能做一些簡單的事情,如String#split

    謝謝。

  • +0

    你能告訴樣本輸入和期望的輸出文本。 – sln

    +1

    我認爲這些方法通常都不是首選,一切都取決於任務和條件。有時候,我認爲它只是沒有意義, –

    回答

    1

    假設您打算使用vanilla PatternMatcher處理,第一個正則表達式通常會捕獲更多,更少的字符(最多可以結束標點符號和一些空白字符),因此應該是最快的。如果你正在解析一個非常大的文檔,這可能會有所作爲。

    但是,它可能是笨拙提取的開始和結束索引每個句子,因爲你會從兩個連續兩場比賽需要的信息,以便能夠確定了一個完整的句子。第二個正則表達式直接將句子映射到單個匹配並啓用最簡單的代碼。

    因此在這裏沒有免費的午餐。兩者都可以完成這項工作,不過您可以根據您定位的文檔類型使它們更加健壯。尤其要注意句子中出現意外的標點符號,如:

    ...「?」字符可以用來...

    相關問題