正規表現の構文

概要

Sensitive Data Scanner では、スキャンルールによってデータ内でマッチする機密情報を検出します。機密情報のスキャンのためにスキャンルールライブラリのルールを使用することも、正規表現 (regex) パターンを使ってカスタムスキャンルールを作成することも可能です。Sensitive Data Scanner の正規表現構文は、PCRE2 のサブセットです。


交替

交替を使うと、最初に一致する式を選ぶことができます。交替内の式は空のままにすることができ、これにより何にでも一致し、交替式全体がオプションになります。

正規表現構文説明
...|...|...交替。
...|...|空式との交替。

アサーション

アサーション説明
\b単語境界。
\B単語境界でない。
^行頭。
$行末。
/Aテキストの開始。
\zテキストの終わり。
\Zテキストの終わり (または、テキストの終わりの直前にある \n の前)。

ASCII クラス

カスタム文字クラスで使用できる名前クラスで、例えば [[:ascii:]] などです。これらは ASCII 文字にのみマッチします。

名前クラス説明
alnum英数字。
alphaアルファベット。
ascii任意の ASCII 文字。
blankスペースまたはタブ。
cntrl制御文字。
digit任意の数字。
graph任意のグラフィック文字または印刷文字 (スペースは不可)。
lower任意の小文字。
print印刷可能な文字 (スペースを含む)。
punct任意の句読点文字。
space空白文字。
upper任意の大文字。
word/w と同じ。
xdigit任意の 16 進数。

文字エスケープ

正規表現構文説明
\xhh16 進コード hh を持つ文字をエスケープします (2 桁まで使用可能)。
\x{hhhhhh}16 進コード hhhhhh を持つ文字をエスケープします (1 桁から 6 桁まで)。
\aベル (\x{7}) をエスケープします。
\bバックスペース (\x{8}) をエスケープします。これはカスタム文字クラス (例えば [\b]) でのみ動作し、それ以外では単語境界として扱われます。
\cx制御シーケンスをエスケープします。xA-Z (大文字または小文字) です。例: \cA = \x{0}, \cB = \x{1},… \cZ = \x{19}
\eASCII エスケープ文字 (\x{1B}) をエスケープします。
\fフォームフィード (\x{C}) をエスケープします。
\n改行 (\x{A}) をエスケープします。
\r復帰改行をエスケープ (\x{D}) します。
\tタブをエスケープ (\x{9}) します。
\v垂直タブ (\x{B}) をエスケープします。

文字クラス

正規表現構文説明
.任意の文字にマッチ (\n 以外) します。s フラグを有効にすると \n を含むすべての文字にマッチします。
\d任意の ASCII 数字 ([0-9]) にマッチします。
\D\d でマッチしないものにマッチします。
\hスペースまたはタブにマッチします ([\x{20}\t])。
\H\h とマッチしないものにマッチします。
\s任意の ASCII 空白文字にマッチします ([\r\n\t\x{C}\x{B}\x{20}])。
\S\s とマッチしないものにマッチします。
\vASCII の縦書きスペースにマッチします ([\x{B}\x{A}\x{C}\x{D}])。
\V\v とマッチしないものにマッチします。
\w任意の ASCII 単語文字 ([a-zA-Z0-9_]) にマッチします。
\W\w とマッチしないものにマッチします。
\p{x}Unicode プロパティ x にマッチするものにマッチします。完全なリストは Unicode プロパティを参照してください。

カスタム文字クラス

正規表現構文説明
[...]括弧内にリストされた任意の文字にマッチします。
[^...]括弧の中にリストされていないものにマッチします。
[a-zA-Z]大文字でも小文字でも A - Z の範囲内のものにマッチします。
[\s\w\d\S\W\D\v\V\h\H\p{x}...]上記で定義された他のクラスも使用可能です (リテラルとして扱われる . を除く)。
[[:ascii_class:]]特殊な名前の ASCII クラスにマッチします。
[[:^ascii_class:]]反転した ASCII クラスにマッチします。

グループ

優先順位の変更やフラグの設定にはグループを使用します。Sensitive Data Scanner ではキャプチャは使用されないため、キャプチャグループは非キャプチャグループと同じように動作します。同様に、キャプチャグループ名も無視されます。

正規表現構文説明
(...)キャプチャグループ。
(?<name>...)名前付きキャプチャグループ。
(?P<name>...)名前付きキャプチャグループ。
(?'name'...)名前付きキャプチャグループ。
(?:...)非キャプチャグループ。

フラグの設定

正規表現の動作を変更するにはフラグを使います。フラグを指定する方法は 2 つあります。

  1. (?imsx:...): 非キャプチャグループ内の式にのみ適用されるフラグを設定します。
  2. (?imsx)...: 現在のグループの残りの部分に適用されるフラグを設定します。

- の後に記載されたフラグは、以前に設定されていた場合は解除されます。

imsxフラグの設定を解除するには (?-imsx) を使用します。

使用可能なフラグ

フラグ名前説明
i大文字小文字を区別しない大文字と小文字の両方にマッチします。
m複数行モード^$ は行頭と行末にマッチします。
s単一行通常は \n 以外の文字にマッチする . が任意の文字にマッチするようにします。
x拡張空白文字は無視されます (カスタム文字クラスを除く)。

引用

正規表現構文 \Q...\E を使うと、\Q\E の間をすべてリテラルとして扱えます。

量指定子

量指定子は前の式を繰り返します。Greedy は、できるだけ多く繰り返し、マッチを見つけるために必要なときだけ繰り返しを減らします。Lazy は最小限の繰り返しを行い、必要に応じて繰り返しを増やします。

正規表現構文説明
?0 または 1 回繰り返します (Greedy)。
??0 または 1 回繰り返します (Lazy)。
+1 回以上繰り返します (Greedy)。
+?1 回以上繰り返します (Lazy)。
*0 回以上繰り返します (Greedy)。
*?0 回以上繰り返します (Lazy)。
{n}ちょうど n 回繰り返します (Lazy 修飾子はここで受け付けられますが、無視されます)。
{n,m}最低でも n 回、最大でも m 回繰り返します (Greedy)。
{n,m}?最低でも n 回、最大でも m 回繰り返します (Lazy)。
{n,}少なくとも n 回繰り返します (Greedy)。
{n,}?少なくとも n 回繰り返します (Lazy)。

: {,m} は無効で、リテラルとして扱われます。同様に、中括弧の中に空白を入れるなどの構文の違いは、量化指定をリテラルとして扱います。

Unicode プロパティ

文字クラス \p{x} における x の Unicode プロパティです。

Unicode プロパティ説明
Cその他
CcControl
Cf形式
Cn未割り当て
Co私用
Cs代理
L文字
Ll小文字
Lm修飾文字
Loその他の文字
Ltタイトルケース文字
Lu大文字
Mマーク
Mcスペーシングマーク
Me囲みマーク
Mnノンスペーシングマーク
N数値
Nd10 進数
Nl文字による数
Noその他の数
P句読点
Pcコネクタ句読点
Pdダッシュ句読点
Peクローズ句読点
Pf終止句読点
Pi開始句読点
Poその他の句読点
Ps開放句読点
S記号
Sc通貨記号
Sk修飾記号
Sm数学記号
Soその他の記号
Z区切り文字
Zl行区切り記号
Zp段落区切り記号
Zsスペース区切り記号

スクリプト名はスクリプトの任意の文字にマッチさせるために使用できます。使用できる文字は以下の通りです。

アドラム語アホム語アナトリア象形文字アラビア語アルメニア語アヴェスタ語バリ語バムン語バッサ・ヴァーバタク語ベンガル語バイクスキ語ボポモフォブラーフミー点字ブギス語ブヒッド語カナダ先住民文字カリア語カフカス・アルバニア語チャクマ語チャム語チェロキー語コラシュム語共通語コプト語楔形文字キュプロス文字キュプロ・ミノア語キリル文字デゼレト文字デーヴァナーガリー文字ディヴェース・アクル語ドグラ語デュプロイ語エジプト象形文字エルバサン語エリマイ語エチオピア語グルジア語グラゴル文字ゴート文字グランタ文字ギリシャ語グジャラート語グンジャラ・ゴンディ語グルムキー語漢字ハングルハニフィ・ロヒンギャ語ハヌヌー語ハトラン語ヘブライ語ひらがなインペリアル・アラム語継承文字碑文パフラヴィ語碑文パルティア語ジャワ語カイティ語カンナダ語カタカナカヤー・リ語カローシュティー文字契丹小字クメール語コージキ語フダワディ語ラオ語ラテン語レプチャ語リンブ語線文字A線文字Bリス語リキア語リディア語マハジャニ語マカサル語マラヤーラム語マンディア語マニ教文字マルチェン語マサラム・ゴンディ語メデファイドリン語メータイ・マイエク語メンデ・キカクイ語メロエ筆記体メロエ象形文字ミャオ語モディ語モンゴル語モロ語ムルタニ語ミャンマー語ナバタイ語ナンディナガリ語新タイ・ルー語ネワ語ンコ語女書オガム文字オル・チキ文字古ハンガリー文字古イタリック文字古北アラビア語古ペルム文字古ペルシア語古ソグド語古南アラビア語古トルコ語古ウイグル語オリヤー語オセージ語オスマニア文字パハウ・モン語パルミラ文字パウ・チン・ハウ文字ファグス・パ文字フェニキア文字詩篇パフラヴィ語レジャン語ルーン文字サマリア文字サウラスター語シャーラダ語ショー文字シッダム文字サインライティングシンハラ語ソグド語ソラ・ソンペン語ソヨンボ文字スンダ語シロティ・ナーグリ文字シリア語タガログ語タグバンワ語タイ・レ語タイ・タム語タイ・ベト語タクリ語タミル語タンサ語タングート文字テルグ語ターナ文字タイ語チベット語ティフィナグ文字ティルフタ語トト語ウガリット文字ヴァイ語ヴィトクチ語ワンチョ語ワラン・チティ文字イェズィーディー語イ語ザナバザル方形文字

その他の参考資料