regex - 仅选择后跟数字的字母
问题描述
我正在尝试从 PostgreSQl 表中选择一些代码。我只想要其中有数字的代码,例如
GD123
GD564
我不想选择任何代码,例如`GDTG GDCNB
到目前为止,这是我的查询:
select regexp_matches(no_, '[a-zA-Z0-9]*$')
from myschema.mytable
这当然行不通。任何帮助表示赞赏。
解决方案
您可以使用
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]+$)
- 如果字符串末尾只有字母,则匹配失败的负前瞻[a-zA-Z0-9]+
- 1 个或多个字母数字字符$
- 字符串结束。
如果要避免匹配12345
,请使用
'^(?![A-Za-z]+$)(?![0-9]+$)[a-zA-Z0-9]+$'
在这里,(?![0-9]+$)
如果从字符串开始到字符串结尾的所有字符都是数字,则同样会导致匹配失败。结果:
推荐阅读
- java - Android 自定义选择器意图仅显示三个选项
- java - 为什么 ParNew gc 第二次花费了太多时间?
- geolocation - iOS 和 android 是否支持 PWA 的室内定位系统?
- javascript - 使用 Reactstrap 和 Hashrouter,如何使用 Navbar 中的 DropdownItem 作为到其他页面的 Navlink?
- javascript - ajax获取数据请求url未找到但已经存在,Laravel 8
- html - 是否有 CSS 属性来控制或设置 div 每一边的长度
- arrays - 具有整数循环计数器的索引 MIPS 数组
- asp.net-core - 这很令人困惑.. 我正在创建 .net 核心 Web 应用程序,并且可以看到 .NetFramework 支持 .NetCore
- android - 迁移到 Androidx 后出现错误 ':app:compileDebugKotlin' java.lang.reflect.InvocationTargetException
- python - 如何缩短此代码以创建 django 模型,使其在功能方面工作相同