regex - PostgreSQL 正则表达式 - 排除带数字的字符串

标签 regex postgresql

我从 Postgre 正则表达式开始,致力于 PostgreSQL 8.3 版本。

我有一个记录表如下:

record
-----------
a  
ab
abc  
123abc 
132abc
123ABC  
abc123
4567  
5678
6789  

我正在学习一个简单的教程: www.oreillynet.com。 在我遇到以下查询之前,一切对我来说似乎都很清楚:

SELECT record FROM myrecords WHERE record ~ '[^0-9]';

教程说:

this expression returns strings that don't include digits.

但它向我返回了以下输出:

output
------
a
ab
abc
123abc
132abc
123ABC
abc123

任何人都可以向我解释这种行为吗?然后,我在该网站上尝试使用另一个表达式来排除在同一字符串中包含数字和小写字母的字符串。

最佳答案

这个命令:

SELECT record FROM myrecords WHERE record ~ '[^0-9]';

表示在record字段中至少要有一个非数字字符(这是regex的意思)。

如果要查找包含数字和小写字母的记录,那么我希望使用如下正则表达式:

SELECT record FROM myrecords WHERE record ~ '[0-9a-z]';

这将返回所有至少有一个字符为数字或小写字母的记录。

如果你想得到没有数字的记录,那么你必须使用下面的正则表达式:

SELECT record FROM myrecords WHERE record ~ '^[^0-9]+$';

这里,方括号外的^字符表示字段的开始,$字符表示字段的结束,我们要求其中的所有字符之间是非数字。 + 表示至少应该有一个这样的字符。如果我们还允许空字符串,那么正则表达式将类似于 ^[^0-9]*$

关于regex - PostgreSQL 正则表达式 - 排除带数字的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22436618/

相关文章:

MySQL正则表达式问题

sql - 为什么添加一个窗口函数会使这个查询变得如此缓慢?

xml - postgresql xpath整数索引

c# 正则表达式问题 : only letters, 数字和一个点(2 到 20 个字符)允许

javascript - 选择某些字符正则表达式之间的文本

postgresql - 误解 UPDATE FROM 语法

postgresql - Postgres regr_slope 返回 NULL

django - 使用固定装置将 django admin auth.groups 和用户迁移到新数据库

regex - 单行代码折叠

regex - 如何使用正则表达式提取网站的确切名称?