PostgreSQLの正規表現

PostgreSQLの正規表現

正規表現は、java、.NET、PHP、Perl、さらにはPostgreSQLなどのプログラミング言語にとって非常に強力なツールです。
ここでは、PostgreSQLで正規表現を使用する方法を示すいくつかの基本的な例を記述します。

1)isdigit function –これは他のデータベースの組み込み関数であるため、PostgreSQLにはありません。
これは、許可された数値のみを検証するための非常に便利な関数です。 ただし、PostgreSQLで自分自身でisdigit関数を作成できます。

create or replace function isdigit(text) returns boolean as '
select $1 ~ ''^(-)?[0-9]+$'' as result
' language sql;

--test function
select isdigit('1') --return true
select isdigit('A') --return false

2)isString function –この関数は、他のデータベースに組み込まれている関数であるため、PostgreSQLにもありません。
これは、文字列許可のみを検証するための非常に便利な関数です。 ただし、PostgreSQLでisString関数を作成することはできます。

create or replace function isString(text) returns boolean as '
select $1 ~ ''^(-)?[a-zA-Z]+$'' as result
' language sql;

--test function
select isString('1') --return false
select isString('A') --return true

3)isIPAddress function –これは他のデータベースに組み込まれている関数ではないと思います。 この関数は、IPアドレスの許可を検証するために使用されます。

例A

--check ipaddress
create or replace function isIPAddress(text) returns boolean as '
select $1 ~ ''^[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+$'' as result
' language sql;

--test function
select isIPAddress('202.111.0.1') --return true
select isIPAddress('202.ZZZ.0.A') --return false
select isIPAddress('202.11199999999.1.100') --return true

例B

create or replace function isIPAddressStrict(text) returns boolean as '
select $1 ~ ''^[0-9]?[0-9]?[0-9]?\.[0-9]?[0-9]?[0-9]?\.[0-9]?[0-9]?[0-9]?\.[0-9]?[0-9]?[0-9]?$'' as result
' language sql;

--test function
select isIPAddressStrict('202.111.0.1') --return true
select isIPAddressStrict('202.ZZZ.0.A') --return false
select isIPAddressStrict('202.11199999999.1.100') --return false

うわー、印象的でしょ? 実際、正規表現は上記の単純な関数よりも強力です。 時間をかけて勉強する価値があります。 それについてもっと知りたい場合はここに行ってください
http://en.wikipedia.org/wiki/Regular_expression

よろしければ、あなたの例を私にも教えてください。 ありがとう