2013-09-29 50 views
0

考虑像下面的一个输入,我需要检查是否匹配提供的格式“ABCD1234”的文字,:基本正则表达式中的#1

  • ABCD1 ###匹配ABCD1943,ABCD1300,但确实不匹配ABCD2042或FOOB3075
  • DCBA [98] ###匹配DCBA9012,DCBA8899但不DCBA6211
  • #### 1 ###匹配ABCD1848和BARR1093
  • (ABCD | FOOB | BARR)2 ## #匹配ABCD2999,FOOB2533,BARR2222
  • ABCD1234,WXYZ9876 m atches仅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字符串函数文档之后,我仍然无所适从。

谢谢。

+0

只是为了确保 - 你要求翻译从你的“modifiedRegEx”到一个正常的正则表达式?我希望“DCBA [98] ###匹配DCBA4012,DCBA3899”是一个错字。我猜如果你用“[0-9] *”,“####”替换为“[A-Z] *”和“,”的“###” - 它会做你所问... – Vlad

+0

是的,这是一个错字。不,我不想翻译成常规正则表达式,我希望函数在输入模式匹配输入测试时返回TRUE,否则返回false。 – warchinal

回答