2016-07-07 209 views
0

我正在尋找解析自定義降價文本,如下面的例子。正則表達式正確匹配組

1 
Post:1 
Image:1|thumb 
Image:1|thumb|html classes here 
1|thumb|html classes here 

一般格式爲:除冒號後的ID ModelName:ID|image_size|html classes

一切(:)是可選的。請注意,該ID也可以是一個字符串。最後一個管道後面可能有許多空間分隔的CSS類。這是我到目前爲止有:

^([\w\.]+)?(?::([-\w\d\.]+))(?:\|(\w+))?(?:\|([-\w\s\d]+))?$ 

Regular expression visualization

Debuggex Demo

這個正則表達式有我無法弄清楚如何解決

  1. 冒號應的幾個問題出現在合併爲主的行之前,而不是之後。換句話說,只有組1出現時才需要冒號。 (同樣的想法與管道(|。第3組前)和4
  2. 正則表達式不頂部匹配最後3測試用例1Post:1正確匹配

回答

1

你可以做到這一點。與

(?:(\w+):)?(\d+)(?:[^|\n]*\|([^|\n]*)(?:\|(.*))?)? 

它會捕獲第一標籤在組1中,ID輸入到第二組,圖像尺寸成第三和類到第四。

首先,它ç標準標籤(可選),然後是一個數字。接下來是一個也是可選的組,可以掃描|,然後捕獲所有內容直到另一個|或行尾。如果發現|捕獲所有行到行尾。

See it here at regex101

+0

謝謝,這絕對是朝着正確方向邁出的一步。不過,我還需要在一個組中捕獲Image和Post。 – danielbker

+0

根據你的評論編輯:) – ClasG

+0

我編輯了你的原始正則表達式,並得到了相同的答案!謝謝你的幫助。你是一個正則表達式專家! – danielbker