2013-10-22 75 views
-3

我在這裏看到過類似的問題,但我不認爲他們中的任何一個都對此有所幫助。PHP:這個preg_match從ereg轉換出什麼問題

我從一個使用舊版本PHP的人,特別是ereg函數繼承了一個站點。他們原來的REG EX是:

$regex = "[ ]+[0-9]+) ([a-zA-Z]+)[ ]+Crimson[ ]+([0-9]+)[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+[ ]+([0-9]+)[ ]+[0-9]+"; 

我讀過,你需要開始和以分隔符結尾,所以我已經將它更新爲:

$regex = "/[ ]+[0-9]+) ( [a-zA-Z]+)[ ]+Crimson[ ]+([0-9]+)[ ]+[0-9]+[ ]+[0-9]+[ ]+[0-9]+[ ]+([0-9]+)[ ]+[0-9]+/"; 

但我仍然得到這個錯誤:

Warning: preg_match(): Compilation failed: unmatched parentheses at offset 10

我沒有看到任何表達的特殊字符,所以我不確定到別的什麼,我需要逃跑。有任何想法嗎?

+3

有第一個'[0-9 +)'後閉合支架 - 沒有匹配的開口之一。 – andrewsi

+0

讓我們看... **不匹配的括號** ...表達式中的第一個paren(偏移量爲10的那個)是*閉合*而不是打開...嗯...... – Jon

+0

您應該使用重複運算符而不是按順序複製和粘貼'[0-9]'。 –

回答

2

你的)接近你的正則表達式開始,但你沒有打開它。如果它是文字,請在它之前加上反斜槓。

/[ ]+[0-9]+) 

/[ ]+[0-9]+\) 

如果沒有,第一次打開它。

+0

啊,就是這樣。 )實際上是假設是字面的,所以我逃脫了它。非常感謝您指出這一點。那肯定會是我花費4個小時尋找的,並且只能在最後一刻才能找到的! – Nick

1

在位置10你有一個閉合),沒有開口(