2014-09-03 73 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*$'