2013-02-07 40 views
-2

我有一些文本,即時嘗試解析文件。檢測文本解析是否爲句子或編號列表

考慮這個文本文件:

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 

Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed do 
eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. 
1. Line 1 
2. Line 2 

+ Line 1 
+ Line 2 
+ Line 3 

有三段在文本文件中。

首先是一對句子。 第二個人有一個句子一個編號列表。 三是一個簡單的項目符號列表。我的問題是,在Objective-C中,我怎樣才能弄清楚段落組合,如果它只是句子,我會將它們作爲NSString返回,如果它的項目符號列表,我希望它們在NSArray中分開,如果段落是句子和編號列表的組合,我將它們作爲NSString和NSArray的字典返回。

任何想法?我知道我可以使用正則表達式來出來分成數組或字符串,但我不太知道如何檢測並驗證是否對位是:

  1. 第(句子)
  2. 子彈名單/編號列表。
  3. 組合列表和帕拉

我已經讀了一堆教程和關於regexpressions SO問題後嘗試這樣做。

此表達(?=\d*\s*[\.]?\s*)([a-z\s]+)確實獲取編號列表,但它也抓住列表之前的前面的文本。那就是我完全陷入困境的地方。

回答

1

正如我寫這篇文章你有2個投票結束,沒有評論或答案,這並不奇怪。人們會問:他試過了什麼?算法在哪裏?他做了什麼研究?等等你所要求的不屬於SO的正常區域。

形式上你有什麼是語言,它是由一個語法定義,你需要確定你的數據是否是一句在這種語言,如果是它的組成部分,稱爲解析並且通常涉及詞法語法分析

可能是一個非常大的問題,但並非總是如此。

關於這個話題的文獻是巨大的,但作爲一個相當隨機的起點,看看The Chomsky Hierarchy,它非常簡短地定義了上述一些術語。

現在定義你的語法。例如。什麼是句子?什麼是編號句子? (可能是一個數字點後跟一個句子)什麼是編號列表? (可能一個或多個編號句子)等等

你的語法類型是3嗎?如果是這樣,你可以用正則表達式解析它們,並且它們在Cocoa中可用。

如果不是3型,那麼你就需要寫一個解析器或使用解析器生成。這是一個很大的話題,但我懷疑你的語法是簡單的,一個簡單的臨時或遞歸下降解析器就足夠了。 (事實上​​,如果你保持你的定義簡單,你可以想出一個3型語法。)

如果你在進一步追蹤時遇到困難,那麼你可以在SO將幫助你。

HTH。

+0

你確實寫人 – jasonIM