2017-10-10 31 views
2

我有一個txt文件,我從包含一長串項目的pdf轉換而來。這些項目有一個編號規則如下:如何捕獲兩個捕獲的組之間的所有內容

[A-Z]{1,2}\d{1,2}\.\d{1,2}\.\d{1,2} 

這個表達式將匹配之間的事情:

A1.1.1

ZZ99.99.99

這工作得很好。我遇到的問題是,我試圖在組1中捕獲這一點,並且在組2中的每個項目編號(項目描述)之間的所有內容。

我還需要這些作爲列表或迭代返回,以便最終,捕獲的內容可以導出到Excel電子表格。

這是正則表達式我目前:

^([A-Z]{1,2}\d{1,2}\.\d{1,2}\.\d{1,2}\s)([\w\W]*?)(?:\n) 

按照此鏈接找到什麼,我有一個樣品,我所面臨的問題:

Debuggex Demo

是任何人都能夠無論有多少段落,幫助我弄清楚如何捕捉每個數字之間的所有內容?

任何輸入將不勝感激,謝謝!

+0

我不知道Python,但我有一個類似的[問題](https://stackoverflow.com/questions/46331543/use-regex-to-split-numbered-list-array-into-numbered-list多線)最近。這是[regex101演示](https://regex101.com/r/WpiKin/3)。希望它有幫助 – danieltakeshi

回答

0

您是非常接近:

import re 

s = """ 
A1.2.1 This is the first paragraph of the description that is being captured by the regex even if the description contains multiple lines of text.ZZ99.99.99 
""" 
final_data = re.findall("[A-Z]{1,2}\d{1,2}\.\d{1,2}\.\d{1,2}(.*?)[A-Z]{1,2}\d{1,2}\.\d{1,2}\.\d{1,2}", s) 

輸出:

[' This is the first paragraph of the description that is being captured by the regex even if the description contains multiple lines of text.'] 

使用(.*?)通過你的第一個正則表達式定義可以匹配的字母和數字之間的任何文本。

+0

[Debuggex Demo](https://www.debuggex.com/r/W9NpLnVs1wYFpay8)沒有以這種方式驗證代碼。 – danieltakeshi