2014-09-03 70 views
0

我遇到查詢問題。我使用MySQL作爲數據庫。我想用一個REGEX的結果我預期匹配,並且表是:在mysql中匹配正則表達式失敗

table A 

----------------------------------------------- 
| ID | Description       | 
----------------------------------------------- 
| 1 | 29th Marine Regiment/1st Bn (1/29) | 
| 2 | new 21 new 2 new     | 
| 3 | new 2th 2 (2/2)     | 
| 4 | 2new 2new (2/2)     | 
| 5 | new2 new 2new      | 

結果我需要得到:

----------------------------------------------- 
| ID | Description       | 
----------------------------------------------- 
| 1 | 29th Marine Regiment/1st Bn (1/29) | 

我對正則表達式正確的結果

^(29[^0-9]+)[^0-9]+1[^0-9]+\([a-zA-Z0-9/-]*\)\s*$ 

in http://www.regexr.com/但我沒有在MySQL中得到結果。

http://sqlfiddle.com/#!2/7bd4b/2

有誰知道這是如何發生的?

+1

修剪你的正則表達式來什麼,我認爲* *你希望它是我得到這個工作之一:'「^ 29 [^ 0-9] +1 [^ 0-9] + \\([a-zA-Z0-9/- ] * \\)\\ s * $''請注意'\\'s。 – Biffen 2014-09-03 06:34:34

+0

thanks..it works – muhnizar 2014-09-03 06:46:00

+0

[here](http://stackoverflow.com/q/25615003/1578604)上的任何更新? – Jerry 2014-09-03 06:49:29

回答

0

(將我的意見轉換爲答案)

您需要轉義反斜槓!例如。 \(\\(

還有一些其他問題:

  • 在開始該集團沒有在任何地方使用,因此它可以被刪除。

  • [^0-9]+[^0-9]+(一旦組被刪除)是相當多餘的。它可以縮短到[^0-9]{2,},但在這種情況下,它看起來像[^0-9]+就足夠了。

  • 小提琴版本有一些奇怪的{} s不得不被刪除。

的結果是這樣的:

'^29[^0-9]+1[^0-9]+\\([a-zA-Z0-9/-]*\\)\\s*$'