Stackoverflow中的基本RegEx

时间:2013-09-29 05:53:21

标签: sql regex postgresql plpgsql

如果输入如下之一,我需要检查它是否与给定文本匹配,格式为'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字符串函数文档之后,我也不知所措。

谢谢。

1 个答案:

答案 0 :(得分:2)

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

这个返回true:

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

或:

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