2011-01-26 98 views
2

任何人都可以告訴我這個正則表達式有什麼問題嗎?PHP正則表達式問題

preg_match("/\+?)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))/s", $text, $match, null, $start); 

應該發揮作用(我發現它的一個論壇),但它拋出一個錯誤: 警告:的preg_match()[function.preg匹配]:編譯失敗:在括號不匹配偏移3

我在猜測關於鬼臼的東西是錯的?

由於提前, 菲捨爾

+1

這個正則表達式肯定是壞的。如果您指定了預期的結果和字符串來匹配正則表達式,我們可以嘗試提供有意義的響應。 – 2011-01-26 11:41:05

回答

4

"/\+?) - 這)是無與倫比的。你或者需要在它前面的某個位置放置一個開口,或者擺脫它。不知道哪種方法最適合你想要做的事情。

+0

我想要做的是從以下提取som數據:[quote = quote-userName(32)] quote text [/ quote] ...我想獲取當前數據:「quote-userName (32)「和」報價文字「摘錄! – fischer 2011-01-26 12:07:40

2

它告訴你的是,第一個),這發生在表達式中的第三個字符轉義+和問號,是無與倫比了。有一個缺失(在表達式的開頭或這個)應該被轉義爲\)。

1

缺少反斜槓

123 
"/\+?)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))/s" 
    ^--- here 
"/\+?\)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))/s" 
2

嘗試刪除第一右括號:

\+?\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\])) 

或者逃避它,就像這樣:

\+?\)\)(=.+?,.+?)?\](.+?)\[\/quote\](?!((.*?)\[\/quote\]))