【发布时间】:2014-02-12 00:09:16
【问题描述】:
我对 REGEX 很陌生,所以如果这个问题太简单了,我深表歉意。我在 MySQL 中工作,并尝试创建一个将产生如下结果的比较:
前四到六位必须匹配,如果是数字 -
“414720”匹配“414720xxxx1234”
“414720”匹配“4147xxxxxx1234”
“414720”匹配“41472***abcd”
“414720”匹配“4147”
如果是其他数字,或小于 4,则不匹配
“414720”与“414799xxxx1234”不匹配
“414720”与“414xxxxxxx1234”不匹配
我想也许我可以用类似的东西得到它
SELECT '414720' REGEXP '4147[^0-9-[2]][^0-9-[0]]*'
但它返回 /* SQL 错误 (1139): Got error 'invalid character range' from regexp */,我认为是因为 MySQL 的 REGEX 不支持类减法。我想我可以生成 [^1,3-9] 的明确否定组,但这似乎很棘手,我觉得我可能错过了一个更简单的答案。任何帮助将不胜感激。谢谢。
编辑:上面的 x 可以替换任何字符,或者可能不存在。添加了后两个匹配示例。
【问题讨论】:
标签: regex regex-negation