0

给定如下输入之一,我需要检查它是否与给定文本匹配,格式为“ABCD1234”:

  • ABCD1### 匹配 ABCD1943、ABCD1300,但不匹配 ABCD2042 或 FOOB3075
  • DCBA[98]### 匹配 DCBA9012、DCBA8899 但不匹配 DCBA6211
  • ####1### 匹配 ABCD1848 和 BARR1093
  • (ABCD|FOOB|BARR)2### 匹配 ABCD2999、FOOB2533、BARR2222
  • ABCD1234,WXYZ9876 仅匹配 ABCD1234,WXYZ9876
  • DCBA9###,DCBA8### 与上面的 DCBA[98]### 匹配相同的东西

我写这个就像一个具有以下结构的函数:

create or replace function modifiedRegEx(pattern text, tester text) 
RETURNS boolean
AS $re$
DECLARE
    isMatch boolean;
BEGIN
    isMatch := TRUE;
    return isMatch;
END;
$re$ LANGUAGE 'plpgsql';

显然,上述内容TRUE每次都会返回。我想知道是否有人可以建议一些可能有助于检查上述内容的字符串函数?即使在阅读了 PostgreSQL 字符串函数文档之后,我也很茫然。

谢谢你。

4

1 回答 1

2

你的答案在这里: http ://www.postgresql.org/docs/9.0/static/functions-matching.html

这个返回真:

SELECT 'DCBA9012' similar to 'DCBA[98]___';

或者:

SELECT 'DCBA9012' ~ 'DCBA[98]...';

于 2013-09-29T07:15:03.187 回答