2013-09-29 75 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

回答