2015-04-22 21 views
1

我需要從PO中查找項目的信息。我有項目編號描述數量單價稅收百分比,並總價。我應該找到3場比賽,但第3項有一個很大的描述信息,打破跨幾行文字:獲取文本正則表達式中的第一個匹配詞

1 99999 Item description item description <DESC> 2 100.10 10% 200.20 
2 99999 Item description item description <DESC> 3 100.10 10% 300.30 
3 99999 Item description item description 
Item description item description 
Item description item description 
<DESC> 1 100.10 10% 100.10 

我創建的標籤<DESC>嘗試作爲描述的終點使用,因爲有數字和特殊描述中的字符,我需要使用.*才能得到它。

我創造了這個正則表達式匹配線,但它是不工作的,因爲項目3.我使用{1,4}在這裏得到了很大的描述:

\d{1,3}\s*\d{5}\s*\s*(.+\s*\n*){1,4}<DESC>\s*\d{1,3}\s*([0-9]+(\,[0-9]{3})*\.[0-9]{2})\s*([0-9]+(\,[0-9]{1,2})?)\%\s*([0-9]+(\,[0-9]{3})*\.[0-9]{2}) 

...但它僅產生2場比賽。

1 99999 Item description item description <DESC> 2 100.10 10% 200.20 
2 99999 Item description item description <DESC> 3 100.10 10% 300.30 

3 99999 Item description item description 
Item description item description 
Item description item description 
<DESC> 1 100.10 10% 100.10 

有沒有辦法來改變(.+\s*\n*){1,4}<DESC>拿到第一<DESC>和尋找項目1和2之間的2場比賽?

+0

你似乎可以修改內容,所以你應該更好地格式化它,而不是使用正則表達式 – Gael

+0

沒有一個真實的例子,我不可能提供幫助。 –

回答

0

默認情況下,regexp量詞是貪婪的,所以他們會匹配允許餘下的正則表達式匹配的最長的字符串。而不是{1,4},使用+?獲得描述的非貪婪匹配。