![](/img/trans.png)
[英]Regular expressions convert PCRE to POSIX to use regex in MySQL query
[英]How to convert this regex to mysql posix
如果已有答案,请原谅我。
作为一个带有正则表达式的总计n00b,我很难在这个场景中获得良好的正则表达式:
我需要找到一个字符串是否只包含来自MySQL表字段的字母,字母和数字......例如。 只需获得MET-KL2531910并获得没有数字的MET-IHLPOUJ(因此不包括MET-KL2531910)。
过了一段时间,想出了这些:
适用于MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
适用于MET-IHLPOUJ
REGEXP '^(?=.*[-A-z])[-A-z]+$'
但是,由于MySQL使用POSIX,因此会出现此错误
从regexp获得错误'重复 - 运算符操作数无效'
任何人都可以将我的正则表达式转换为POSIX正则表达式。
适用于MET-KL2531910
REGEXP '^(?=.*[-a-zA-Z])(?=.*[0-9])[-A-z0-9]+$'
你可以用
^[-[:alnum:]]*([-[:alpha:]][-[:alnum:]]*[0-9]|[0-9][-[:alnum:]]*[-[:alpha:]])[-[:alnum:]]*$
细节 :
^
- 字符串的开头 [-[:alnum:]]*
- 0+连字符或字母数字字符 (
- 另一组:
[-[:alpha:]][-[:alnum:]]*[0-9]
- 连字符/ alpha字符,0 + alnum / -
字符,数字 |
- 要么 [0-9][-[:alnum:]]*[-[:alpha:]]
- 一个数字,0 + alnum / -
chars,连字符/ alpha char )
- 交替组的结束 [-[:alnum:]]*
- 0+连字符或字母数字字符 $
- 结束字符串。 对于MET-IHLPOUJ
REGEXP '^(?=.*[-Az])[-Az]+$'
在这里,你根本不需要前瞻,因为你只匹配你需要的东西,使用
^[-[:alpha:]]+$
这里,
^
- 匹配字符串的开头 [-[:alpha:]]+
- 匹配1个或更多-
或字母(= alpha字符) $
- 结束字符串。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.