【问题标题】:MYSQL regular expression matching any word in between square bracketsMYSQL 正则表达式匹配方括号之间的任何单词
【发布时间】:2018-03-24 14:58:58
【问题描述】:

我必须在列值匹配的表中找到特定列的所有值,例如 [name]

我不应该得到类似于 [a]+[b] 或 [a]>[b] 或 [a]%[b]=[c] 的值

所以我基本上不需要除了方括号和分数之外的包含特殊字符的列值

示例:应返回 [test_123]。

我试过了

select * from table_name where column_name REGEXP '^[[][^+-></%]';

这只是想看看 [ 之后是否有任何特殊字符,但是如何查看整个列值中是否有任何特殊字符,我们是否应该使用反斜杠来定义 MySQL 中的特殊字符?

我在https://regexr.com/ 中尝试过,我已经获得了所需的正则表达式

(\[)\w+[^\+\=\/\*\%\^\!](\])

但我不能在 MySQL 中做同样的事情

【问题讨论】:

  • 请提供一些应该返回的字符串,以及一些不应该返回的字符串。例如,我不清楚方括号是字符串的一部分还是元信息的一部分。并且是 a 文字或代表任何单个字母或代表任何字母字符串或字母数字字符串。以及下划线是否包含在“字母数字”中。等等。

标签: mysql regex


【解决方案1】:

*** 已更新 **

(\[[^\_]+])+

这似乎对你正在寻找的东西有用。

你的查询也是错误的,我相信它应该是这样的:

SELECT * FROM mytable WHERE REGEXP_LIKE(mycolumn, 'regexp', 'i');

【讨论】:

  • 感谢您的回复,但是在运行第一个之后我得到了空集,所以运行第二个我得到了输出,但它仍然不是我所期望的。我仍然得到类似于 [test_field]+1 、 ([a] *[b])/100 的值 我只需要 [test1234] 或 [abcdef] 或 [Sample_123] 的值
  • 我不知道原因,但即使这样也没有用,但我尝试回答为'^[[.left-square-bracket.]]+([a-z]|[A-Z]|[0-9]|[_]|[[.left-square-bracket.]]|[[.right-square-bracket.]])+[[.right-square-bracket.]]$';
猜你喜欢
  • 1970-01-01
  • 2018-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-18
相关资源
最近更新 更多