我在javascript
中有一个正则表达式表示正常。
var re = /^([0-9]?[A-Z]+?)\s*(?:FM)?[FGHJKMNQUVXZ](?:[02]0)?[12]?[0-9]/i;
var str = 'RVBM2016';
var m;
if ((m = re.exec(str)) !== null) {
if (m.index === re.lastIndex) {
re.lastIndex++;
}
// View your result using the m-variable.
// eg m[0] etc.
}
现在我尝试在postgres
中的存储过程中重用相同的表达式。以下是我的尝试方法:
select regexp_replace('BLM2016',
E'/^([0-9]?[A-Z]+?)\s*(?:FM)?[FGHJKMNQUVXZ](?:[02]0)?[12]?[0-9]/i', '', 'g')
这应仅返回BL
。对于RVBM2016
,它应该返回RVB
等等..
但现在它对输入文本没有影响。有任何语法错误吗?
答案 0 :(得分:0)
我使用了错误的方法从表达式中提取字符串。如果有人有兴趣,正确的版本如下:
select (regexp_matches('BLM2016', '([0-9]?[A-Z]+?)\s*(?:FM)?[FGHJKMNQUVXZ](?:[02]0)?[12]?[0-9]', 'gi'))[1]