mysql - mysql 中的正则表达式匹配失败

标签 mysql sql regex

我遇到查询问题。我使用 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/

相关文章:

java - 为 MySQL 进行批处理时,JDBC 似乎不想调用 DELETEPreparedStatement

mysql - 错误: Method missing for Active record query : find_by_attribute_name ('test_data' ) not working

php - 如何在 CakePHP 3.x 中的 MySQL IN 子句中使用多个列?

java - 使用 jOOQ 将查询字符串转换为 Query 或 SelectQuery 对象

sql - Redshift SQL 查询 - 优化

python - 比较日期的 strptime 替代方法?

php - MySql 逻辑顺序

javascript - 使用 javascript 正则表达式替换和增加整数值

python - 使用正则表达式匹配这两个条件

sql - 在 View 中基于相同的值创建 JSON