我遇到了查询问题。我使用mysql作为DB。 我想使用REGEX来匹配我期望的结果 和表是
table A
----------------------------------
| ID | Description |
----------------------------------
| 1 | new 2 new 2 new 2 new |
| 2 | new 2 new 2 new |
| 3 | new 2 |
| 4 | 2 new 2new |
我期待的结果
---------------------------------
| ID | Description |
---------------------------------
| 2 | new 2 new 2 new |
| 4 | 2 new 2new |
到目前为止我尝试过的查询:
SELECT * FROM a WHERE (description REGEXP '([^2][^0..9]])2( [^2][^0..9])([^2][^0..9]])2( [^2][^0..9])')
http://sqlfiddle.com/#!2/7d712/2
任何人都可以帮我解决这个问题:(?
答案 0 :(得分:1)
你的正则表达式没有做你认为它做的事情(尽管我不能猜测你认为它做什么)。
部分正则表达式的翻译:
([^2][^0..9]])2
表示:
( # Start a group
[^2] # Match one character except "2"
[^0..9] # Match one character except "0", "." or "9"
] # Match "]"
) # End of group
2 # Match "2"
答案 1 :(得分:0)
正如@Tim Pietzcker指出的那样,你的正则表达并没有你所想的那样做。如果我理解正确,我相信你正在寻找以下正则表达式。这将分别返回ID 2
和4
。
^[^2]*2[^2]*2[^2]*$
您的SQL查询将是:
SELECT * FROM a WHERE (description REGEXP '^[^2]*2[^2]*2[^2]*$')