2017-04-21 62 views
-1

我已經字符串:正則表達式 - 3個從數據[ABCD] ABCD efhg(ABCD)

[18d03] Complete screen 12" (tablet) 

而且我想:

$one = '18d03'; 
$two = 'Complete screen 12"'; 
$three = 'tablet'; 

現在我有這樣的:

preg_match('/^(.+?)\s*\(([^)]+)\)$/', $local->parts_name, $explode); 

但是這個正則表達式首先看不到18d03

+0

http://regexr.com/3fpvr – 12years

回答

1

有幾種方法可以做到這一點,但/^\[(.+)\] (.+?) \((.+)\)$/應該做你想做的。 \的esape字符具有特殊的含義。

可以在http://regexr.com/3fq01

+1

預覽爲了更好的性能,所述第一點的匹配圖案應該是懶('\ [(+)\。]' - >'\ [(。+?)]',或者甚至是'\ [(\ w +)]'如果只有字符字符是預期的)。 –

+0

這很有趣;我沒有意識到使用惰性匹配會帶來性能上的好處。 – StuBez

+0

不,沒有直接的相關性,它是依賴於上下文的。在這裏,'''應該更接近最初的'[',而不是最後的字符串,所以懶惰的量詞在這種情況下更自然。 –

相關問題