1

私はipaddr目的地と呼ばれる列で呼び出されたテーブルを扱っており、その列に次のようなエントリがありますvarchar

tunnel://169.96.88.11:80/
url://169.96.88.30
169.96.88.59:443

これらはすべて可能性です。IP の最初の 3 オクテットに一致するだけで true を返す正規表現ステートメントを作成したいと考えています。したがって、上記の 3 つの例はすべて一致し169.96.88ます。

特定の IP アドレス サブネットに基づいてテーブル内の行を選択するように、正規表現をどのように記述しますか?

select * from ipaddr where destination like '%169.96.88%'

つまり、169.96.88.*ブロック内に宛先エントリがあるすべてのレコードを収集するために結び付けています。

4

2 に答える 2

1
tunnel://\(\([[:digit:]]\{1,3\}[.]\)\{4\}\):80/ -> \2

この正規表現は IP を抽出し、\2 として返します。

使用しているソフトウェアに応じて、この正規表現を少し変更して使用します。'->' は 'return' を意味します。

于 2012-07-19T20:52:49.640 に答える
1
SELECT *
FROM   ipaddr 
WHERE  destination ~ '(://|^)169\.96\.88\.[0-9]';

パターンは、文字列の先頭または で始まります://
次に、ネットワーク、ドット、および少なくとももう 1 つの数字が続きます。

PostgreSQL 9.1.4 でテスト済み。現在のデフォルトを使用していることに注意してくださいstandard_conforming_strings。それ以外の場合は、次のように記述する必要があります。

WHERE  destination ~ E'(://|^)169\\.96\\.88\\.[0-9]';
于 2012-07-19T21:21:48.533 に答える