我目前正在尝试使用MySQL从字符串中提取模式,但遗憾的是还没有达到目标效果。因此,我很乐意得到你的支持。
字符串如下所示:
AB3530A / AB476-1
我想只提取这部分:
AB476
我已经尝试过以下RegExp:
[A-Z]{2}[0-9]{3}
返回:
AB476 -
我也尝试过:
[A-Z]{2}[0-9]{3}([^0-9]|$)
在http://regexr.com/返回AB353
和AB476
但在MariaDB中仅返回AB353
。
有人知道如何在没有任何其他标志的情况下进行提取吗?
提前致谢。
祝你好运
答案 0 :(得分:2)
此link表明,自10.0.5版本起,MariaDB支持Perl兼容的regexp(“PCRE”)。
然后,此构造应该可以__len__
your_string SELECT REGEXP_SUBSTR(
。
(, '\\b[A-Z]{2}\\d{3}\\b');
是“字边界”)
\b
应该返回SELECT REGEXP_SUBSTR('AB3530A/AB476-1','\\b[A-Z]{2}\\d{3}\\b');
注意:代替只允许ASCII字符的'AB476'
,您可以使用[A-Z]
,这意味着“任何由Unicode标记为字母的字符,只有大写字母”。但我想\\p{Lu}
就足够了。
答案 1 :(得分:0)
ShortDive!
你可以试试这个:而不是正则表达式:
SELECT SUBSTR('AB3530A/AB476-1',9,5) constant_length
, SUBSTRING_INDEX(SUBSTRING_INDEX('AB3530A/AB476-1','/',-1),'-',1) variable_length