我遇到查询问题。我使用 MySQL 作为数据库。我想使用 REGEX
来匹配我期望的结果,表格是:
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*$
在 http://www.regexr.com/但我没有在 MySQL 中得到结果。
http://sqlfiddle.com/#!2/7bd4b/2
有人知道这是怎么发生的吗?
最佳答案
(将我的评论变成答案。)
您需要转义反斜杠!例如。 \(
→ \\(
.
还有一些其他问题:
开头的组没有在任何地方使用,因此可以将其删除。
[^0-9]+[^0-9]+
(一旦组被删除)是相当多余的。它可以缩短为[^0-9]{2,}
,但在本例中,看起来[^0-9]+
就足够了。fiddle 版本有一些奇怪的
{}
,必须删除。
结果是:
'^29[^0-9]+1[^0-9]+\\([a-zA-Z0-9/-]*\\)\\s*$'
关于mysql - mysql 中的正则表达式匹配失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25637469/