2012-12-29 78 views
1

如何將一個捕獲的組與正向lookbehinds組合?正則表達式捕獲正向lookbehind(python)的組

我想匹配下面的例子:

 
DS 
DS,x=y 
Some DS,key=value 
Some DS test,key=value&key2=value2 
Some DS test,key=value&key2=value2|key3=value3 

我想出了下面的正則表達式的一切,但逗號匹配:

^(?P<ds_title>[\w \|\-\=\&æøåÆØÅ]+)(?P<filters>[\w \|\-\=\&æøåÆØÅ]+)?$ 

我已經想通了,認爲我正則表達式將需要插入是:

(?<=\,) 

但我不知道在哪裏插入它。無論我插入它的位置,它似乎都會破裂。有誰知道這可以做得對嗎?

+0

你介意發一兩行文字,還是你想要的配對 – Rubens

+1

什麼是DS?目前你的問題非常模糊,無法回答。請詳細說明一些實例。 –

+0

對不起,如果這不清楚。正則表達式已經找到了正確的字符 - 「有些DS」只是一些隨機文本。我需要的是在兩個現有組之間實現可選的逗號。 –

回答

0

難道你不是在想這個嗎?

^(?P<ds_title>[^,]+)(?:,(?P<filters>.+))?$ 

爲什麼不只是允許任何字符串,而不是限制它到您的列表?


事實上,爲什麼要使用正則表達式呢?

parts = data.split(',', 2) 
if len(parts) == 1: 
    title, = parts 
else: 
    title, filters = parts 
+0

我不確定OP想要什麼,但OP的正則表達式可以對輸入做一些初步驗證。 – nhahtdh