2010-07-28 64 views
1

我有類似這樣的字符串幾行:1,19|11|14,2
我想看看是信息:19|11|14(這是號碼清單,19 11和14)
這個信息應該匹配,看看是否有任何數字是在8和13之間的範圍內
MySQL的正則表達式中的字符串匹配的號碼列表

什麼是最有效的方法來實現這一目標?我試圖用像正則表達式:
[^0-9]*(8|9|10|11|12|13)[^0-9]*
但是,這也符合它實際上是19

解析字符串也歡迎其他方法,在MySQL 5.0中只提供功能可以使用數字9。

+0

您的正則表達式當前狀態0或更多的非數字字符,後跟8和13之間的數字後跟0或更多的非數字字符。目前還不清楚你試圖匹配什麼?! – 2010-07-28 16:24:02

+0

@Cags例如,我想匹配「1,8 | 17,1」中的數字8,而不是「1,18 | 17,1」中的數字。我只想匹配8,如果前面不是數字 – baloo 2010-07-28 16:27:31

回答

3

從我記得MySQL的正則表達式支持是非常簡單的我不知道這實際上是多麼可能。我不相信它支持字邊界或環視斷言。這個怎麼樣...

(^|[^0-9])(8|9|10|11|12|13)([^0-9]|$) 
+0

似乎是工作!謝謝 – baloo 2010-07-28 16:45:45

+0

最後,你提出的解決方案解決了我的問題。我試過其他人喜歡^ [[:digit:]] {10} $和'^ [0-9] {10} $'。只有你的我得到期望的價值:) – 2017-03-24 21:20:23