我有大量的文本文檔,並嘗試從每個文檔中提取特定部分。它總是以一行開頭的「Item 7」開頭,並且總是以另一行開頭的「Item 8」結尾。我可以用正則表達式找到這部分:正則表達式:匹配字符串,但僅限於某些最小長度
(^(*)Item 7(.+?)^(*)Item 8)
我的兩個問題是:
有可能兩個部分,在我的每個文件符合這一描述。我想確保我只匹配第二個,這也相當長。
如何在使用記事本++的「搜索和替換」查詢中使用正則表達式提取此部分?
我不確定我是否使用了正確的工具。
謝謝!
增補: 在迄今爲止的答案幫助下,我在記事本++中做了以下工作。 搜索
。*(^(*)項目* 7(?A)(?!^*項目7(?* A))(。+?)^(*)(? =^Item 8))。
Raplce與
$ 1
感謝您的幫助迄今。它的工作很好,只有一個優點。恐怕我不得不進入更多細節:我想從中提取文本的大多數(但不是全部)文檔都有一張內容表。這就是爲什麼我想提取第二個「第7項到第8項」的情況,以防有兩個。還有一個項目7A,以防萬一你想知道我的代碼。
正如我現在認識到的那樣,在第7項到第8項的第二種情況下,有許多文檔的每個頁面上都有「項目7」作爲標題。因此,我的代碼只匹配項目的最後一頁7在某些情況下。
我認爲一個解決方案可能只是忽略項目7到項目8的情況,如果他們有一定的最小長度。具體而言,只要忽略項目7至項目8的情況,如果它們少於120個標誌。
任何想法?
嘗試'(?m)^第7項([\ S \ s] *?)(?= ^第8項)'但是,您應該舉例說明。 – sln
如果有2個塊,但沒有ToC,會怎麼樣?那麼,你怎麼知道要抓什麼?對不起,現在,這個問題沒有解決方案,直到你制定上下文規則。 –