概要
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 進数。 |
文字エスケープ
| 正規表現構文 | 説明 |
|---|
\xhh | 16 進コード hh を持つ文字をエスケープします (2 桁まで使用可能)。 |
\x{hhhhhh} | 16 進コード hhhhhh を持つ文字をエスケープします (1 桁から 6 桁まで)。 |
\a | ベル (\x{7}) をエスケープします。 |
\b | バックスペース (\x{8}) をエスケープします。これはカスタム文字クラス (例えば [\b]) でのみ動作し、それ以外では単語境界として扱われます。 |
\cx | 制御シーケンスをエスケープします。x は A-Z (大文字または小文字) です。例: \cA = \x{0}, \cB = \x{1},… \cZ = \x{19}。 |
\e | ASCII エスケープ文字 (\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 とマッチしないものにマッチします。 |
\v | ASCII の縦書きスペースにマッチします ([\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 クラスにマッチします。 |
Groups
優先順位の変更やフラグの設定にはグループを使用します。Sensitive Data Scanner ではキャプチャは使用されないため、キャプチャグループは非キャプチャグループと同じように動作します。同様に、キャプチャグループ名も無視されます。
| 正規表現構文 | 説明 |
|---|
(...) | キャプチャグループ。 |
(?<name>...) | 名前付きキャプチャグループ。 |
(?P<name>...) | 名前付きキャプチャグループ。 |
(?'name'...) | 名前付きキャプチャグループ。 |
(?:...) | 非キャプチャグループ。 |
フラグの設定
正規表現の動作を変更するにはフラグを使います。フラグを指定する方法は 2 つあります。
(?imsx:...): 非キャプチャグループ内の式にのみ適用されるフラグを設定します。(?imsx)...: 現在のグループの残りの部分に適用されるフラグを設定します。
- の後に記載されたフラグは、以前に設定されていた場合は解除されます。
imsxフラグの設定を解除するには (?-imsx) を使用します。
使用可能なフラグ
| フラグ | Name | 説明 |
|---|
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 | その他 |
Cc | Control |
Cf | フォーマット |
Cn | 未割り当て |
Co | 私用 |
Cs | 代理 |
L | 文字 |
Ll | 小文字 |
Lm | 修飾文字 |
Lo | その他の文字 |
Lt | タイトルケース文字 |
Lu | 大文字 |
M | マーク |
Mc | スペーシングマーク |
Me | 囲みマーク |
Mn | ノンスペーシングマーク |
N | 数値 |
Nd | 10 進数 |
Nl | 文字による数 |
No | その他の数 |
P | 句読点 |
Pc | コネクタ句読点 |
Pd | ダッシュ句読点 |
Pe | クローズ句読点 |
Pf | 終止句読点 |
Pi | 開始句読点 |
Po | その他の句読点 |
Ps | 開放句読点 |
S | 記号 |
Sc | 通貨記号 |
Sk | 修飾記号 |
Sm | 数学記号 |
So | その他の記号 |
Z | 区切り文字 |
Zl | 行区切り記号 |
Zp | 段落区切り記号 |
Zs | スペース区切り記号 |
スクリプト名はスクリプトの任意の文字にマッチさせるために使用できます。使用できる文字は以下の通りです。
アドラム語、アホム語、アナトリア象形文字、アラビア語、アルメニア語、アヴェスタ語、バリ語、バムン語、バッサ・ヴァー、バタク語、ベンガル語、バイクスキ語、ボポモフォ、ブラーフミー、点字、ブギス語、ブヒッド語、カナダ先住民文字、カリア語、カフカス・アルバニア語、チャクマ語、チャム語、チェロキー語、コラシュム語、共通語、コプト語、楔形文字、キュプロス文字、キュプロ・ミノア語、キリル文字、デゼレト文字、デーヴァナーガリー文字、ディヴェース・アクル語、ドグラ語、デュプロイ語、エジプト象形文字、エルバサン語、エリマイ語、エチオピア語、グルジア語、グラゴル文字、ゴート文字、グランタ文字、ギリシャ語、グジャラート語、グンジャラ・ゴンディ語、グルムキー語、漢字、ハングル、ハニフィ・ロヒンギャ語、ハヌヌー語、ハトラン語、ヘブライ語、ひらがな、インペリアル・アラム語、継承文字、碑文パフラヴィ語、碑文パルティア語、ジャワ語、カイティ語、カンナダ語、カタカナ、カヤー・リ語、カローシュティー文字、契丹小字、クメール語、コージキ語、フダワディ語、ラオ語、ラテン語、レプチャ語、リンブ語、線文字A、線文字B、リス語、リキア語、リディア語、マハジャニ語、マカサル語、マラヤーラム語、マンディア語、マニ教文字、マルチェン語、マサラム・ゴンディ語、メデファイドリン語、メータイ・マイエク語、メンデ・キカクイ語、メロエ筆記体、メロエ象形文字、ミャオ語、モディ語、モンゴル語、モロ語、ムルタニ語、ミャンマー語、ナバタイ語、ナンディナガリ語、新タイ・ルー語、ネワ語、ンコ語、女書、オガム文字、オル・チキ文字、古ハンガリー文字、古イタリック文字、古北アラビア語、古ペルム文字、古ペルシア語、古ソグド語、古南アラビア語、古トルコ語、古ウイグル語、オリヤー語、オセージ語、オスマニア文字、パハウ・モン語、パルミラ文字、パウ・チン・ハウ文字、ファグス・パ文字、フェニキア文字、詩篇パフラヴィ語、レジャン語、ルーン文字、サマリア文字、サウラスター語、シャーラダ語、ショー文字、シッダム文字、サインライティング、シンハラ語、ソグド語、ソラ・ソンペン語、ソヨンボ文字、スンダ語、シロティ・ナーグリ文字、シリア語、タガログ語、タグバンワ語、タイ・レ語、タイ・タム語、タイ・ベト語、タクリ語、タミル語、タンサ語、タングート文字、テルグ語、ターナ文字、タイ語、チベット語、ティフィナグ文字、ティルフタ語、トト語、ウガリット文字、ヴァイ語、ヴィトクチ語、ワンチョ語、ワラン・チティ文字、イェズィーディー語、イ語、ザナバザル方形文字
参考資料