Regex 仅选择后跟数字的字母
我试图从PostgreSQl表中选择一些代码。 我只想要里面有数字的代码,例如Regex 仅选择后跟数字的字母,regex,postgresql,Regex,Postgresql,我试图从PostgreSQl表中选择一些代码。 我只想要里面有数字的代码,例如 GD123 GD564 我不想选择任何类似“GDTG GDCNB”的代码 以下是我目前的疑问: select regexp_matches(no_, '[a-zA-Z0-9]*$') from myschema.mytable 这当然行不通。 感谢您的帮助。smth如: so=# with c(v) as (values('GD123'),('12345'),('GD ERT')) select v ~ '[A
GD123
GD564
我不想选择任何类似“GDTG GDCNB”的代码
以下是我目前的疑问:
select regexp_matches(no_, '[a-zA-Z0-9]*$')
from myschema.mytable
这当然行不通。
感谢您的帮助。smth如:
so=# with c(v) as (values('GD123'),('12345'),('GD ERT'))
select v ~ '[A-Z]{1,}[0-9]+', v from c;
?column? | v
----------+--------
t | GD123
f | 12345
f | GD ERT
(3 rows)
?..您可以使用
CREATE TABLE tb1
(s character varying)
;
INSERT INTO tb1
(s)
VALUES
('GD123'),
('12345'),
('GDFGH')
;
SELECT * FROM tb1 WHERE s ~ '^(?![A-Za-z]+$)[a-zA-Z0-9]+$';
结果:
详细信息
-字符串的开头^
-如果字符串末尾只有字母,则会导致匹配失败的负前瞻(?![A-Za-z]+$)
-1个或多个字母数字字符[a-zA-Z0-9]+
-字符串结束$
12345
,请使用
'^(?![A-Za-z]+$)(?![0-9]+$)[a-zA-Z0-9]+$'
在这里,(?![0-9]+$)
同样会使匹配失败,如果从字符串开始到字符串结束的所有字符都是数字。结果:
如果要获取的数据格式是一组字符,后跟一组数字(即GD123),则可以使用正则表达式:
[a-zA-Z0-9]+[0-9]
匹配至少有一个字母后跟至少一个数字的字符串的模式是
'[a-Za-z]+[0-9]+'
现在,如果有效的模式必须以两个字母开头,然后如您的示例所示,后面有3个数字,那么将+
分别替换为{2}
&{4}
,并将模式括在^$
中,如下所示:'^[A-Za-z]{2}[0-9]{3}$'
正则表达式匹配运算符是~
,可以在where子句中使用:
SELECT no_
FROM myschema.mytable
WHERE no_ ~ '[A-Za-z]+[0-9]+'
这将捕获数字前面的每个数字和字母:
([A-z]+\d+)
那么
124566
呢?你是说条目不能都是数字或大写字母吗?对不起,我不明白。那怎么办?好的,试试^(?![A-Za-z]+$)[A-Za-Z0-9]+$
好的,就这样