【发布时间】:2009-06-05 16:36:35
【问题描述】:
我正在尝试在 mySQL 的列中匹配字符串,例如 '[sometext
SELECT * FROM message WHERE msgtext REGEXP '\\[(.+)?<(.+)?>\\]'
这个查询没有收到任何错误,但它返回了我不想要的东西。而不是 (.+),我想要 [^\]] (匹配除右方括号之外的所有内容)。当我更改查询时,出现以下错误:“从正则表达式中获取错误'重复运算符操作数无效'”
阅读 mySQL 文档here 后,它声明“要包含文字 ] 字符,它必须紧跟左括号 [。”由于我想要“^\]”而不是“]”,这是否可能,因为括号不能是左括号之后的第一个字符?以下是我尝试过的一些查询,它们得到了上面列出的相同错误:
SELECT * FROM message WHERE msgtext REGEXP '\\[([^\\]]+?)<([^\\]]+?)>\\]'
SELECT * FROM message WHERE msgtext REGEXP '\\[[^\\]]+?<[^\\]]+?>\\]'
SELECT * FROM message WHERE msgtext REGEXP '\\[[^[.right-square-bracket.]]]+?<[^[.right-square-bracket.]]]+?>\\]'
更新:
以下查询运行没有错误,但不返回任何行,即使我知道有些列与我要查找的内容相匹配(基于顶部的原始查询):
SELECT * FROM message WHERE msgtext REGEXP '\\[([^\\]]+)?<([^\\]]+)?>\\]'
【问题讨论】:
标签: mysql regex square-bracket