忽略与Postgres中的正则表达式匹配的电子邮件

时间:2012-03-20 15:07:42

标签: sql regex postgresql

我有一个SQL查询,它返回所有公司记录,忽略那些使用Postgresql(info+random_name@example.com)匹配给定模式的电子邮件的记录,也包括加号。

普通电子邮件模式为'random_name@example.com'

我的SQL查询如下:

SELECT * from companies where email !~ E'^(info)+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+';

语法看起来是否正确?

更新

以下查询与模式匹配:

SELECT * from companies where email ~ E'^(info\+)+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+';

现在如何扭转它,因为!〜似乎没有忽略匹配模式

UPDATE2:

正确的语法确实如下:

SELECT * from companies where email ~ E'^info\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+';

3 个答案:

答案 0 :(得分:1)

逃生(双重逃脱)加号:

E'^(info)\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+'
  here __^^

此外,没有必要与(info)

组成一个小组
E'^info\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+[.][A-Za-z]+'

答案 1 :(得分:1)

更确切地说:

SELECT *
FROM   companies
WHERE  email ~ E'^info\\+[A-Za-z0-9._%-]+@[A-Za-z0-9.-]+\\.[A-Za-z]{2,6}';

这并不能提供域名中允许使用的äöü等特殊字符。

答案 2 :(得分:0)

测试并告诉我们?

我认为你必须改变正则表达式的开头,例如:

^info\+[A-Z...