2016-05-13 57 views
1

這似乎是一個簡單的問題,但我貪(我認爲)掙扎,我無法找到一個明顯的例子:簡單的正則表達式PCRE

考慮以下字符串:

text/html; text/xml; text/json 

我該如何檢索'第一個子類型'(上面例子中的'html')?

我已經試過各種組合是這樣的:

(.*)\/(.*)[ |;] 

,並試圖獲得第二個變量。

我知道串將永遠在形式

aaa/bbb 

至少一個字符串和可以是它,或者它可以跟隨分號(它們之間可能的空白)和更多的數據(我可以忽略 - 我只需要第一個子類型)。所以,可能的選項可能是這樣的:

text/html 
text/html; text/xml 
text/html ; text/xml  ; application/json 

我曾希望這是爲尋找第一個斜槓,然後後,服用了一切要麼空白或分號或的結束一樣簡單字符串(這正是我認爲我的正則表達式正在做的),但我在正則表達式方面不夠熟練。

爲了澄清,這需要一個PCRE兼容的正則表達式,如果這能幫助/阻礙的東西......

+0

'\/[;]' - 使用延遲匹配(*?)(*。?)。或'[^ \ /] + \ /(\ S +)'(如果它是PHP的話,都帶'preg_match') –

回答

0

務必:

^[^\/]+\/([^\s;]+) 

現在,\1是你想要的第一個亞型。

Demo

+0

'[^ \ s]'只是'\ S'。 – kennytm

+0

@kennytm編輯,它的肌肉記憶我猜:) – heemayl

+0

嗯,這個正則表達式會匹配'text/html;'與'「html;」'。看起來你需要'[^ \ s;]':| – kennytm