2011-04-15 28 views
1

對不起我的英文不好。我在eshop有一些參數:RegEx用PHP解析eshop參數

Mraznička 
* Počet zásuvek mrazničky 3 
* XXL zásuvka 
* Mrazící výkon 4,5 kg/24 h 

Rozměry balení: 
Hmotnost (kg): 61.000 
Výška (cm): 182.00 
Šířka (cm): 64.00 
Hloubka (cm): 71.00 


Typ: volně stojící 
Konstrukce chladničky: kombinovaná 
Umístění mrazícího prostoru: mraznička dole 
Změna otevírání dveří: ANO 
Ovládání: mechanické-knoflíkové 
Displej: bez displeje 
Energetická třída: A++ 

有三種塊,我需要選擇哪一種。

條件類型:

1)文本塊與任何字母開頭,但不能與*,並沒有不散:這行必須跟新線(S)求。 *

2)文本塊以任何字母開頭,但不以*結尾,此行必須後跟新行不乞求。與*

3)線(或線)與字(OD字開頭),然後按照字符「:」,然後按照任何othes字(或詞)

你能幫幫我,我該怎麼辨別文本塊的類型?我需要單獨檢查每個文本塊 - 解析長文本以阻止已完成並且正常工作。

謝謝。

+0

到目前爲止,您是否有過任何代碼?改進某些東西比完成新事物更容易。 :) – sarnold 2011-04-15 07:35:41

回答

0

爲鏈接到在線正則表達式測試工具的3種情況添加了可能的解決方案。
這些正則表達式中的每一個只會匹配塊類型的一種情況。
作爲一個先決條件,我認爲塊總是由空行分隔。

編輯
小調評論啓發更新正則表達式(其被張貼作爲單獨的答案)殼體2和3可由此重疊現在正則表達式的每個塊之前強制空行。

1)http://www.myregextester.com/?r=df2be635

^[\r\n]{1,2}(?:[^*].+[^:][\r\n]{1,2})(?:\*.+[\r\n]{1,2})+$ 

2)http://www.myregextester.com/?r=f903ae6d

^[\r\n]{1,2}(?:[^*].+:[\r\n]{1,2})(?:[^*\s].+[\r\n]{1,2})+$ 

3)http://www.myregextester.com/?r=17ed0af8

^[\r\n]{1,2}(?:[^*].+:.+[^:][\r\n]{1,2})(?:[^*\s].+[\r\n]{1,2})+$ 

對於所有這三種情況下,結果將在匹配器組被捕獲[0]。正則表達式由第一行的兩個非捕獲組和以下重複列表組成。

+0

檢查編輯版本的正則表達式。對於正則表達式3起初我並不理解錯字「單詞(od word)」實際上是指「單詞(或單詞)」的問題。 **重要**正如答案中所提到的,每個區塊之前的空行現在被強制作爲避免案例2和3重疊的前提條件 – 2011-04-15 09:29:10

+0

@Los Bollos:您的「不工作」示例不以空行開始。這應該是一個先決條件,以使其工作。 – 2011-04-15 11:56:26