チェック方針レコード一覧

←前のページ トップ 次のページ→

NAME (方針名の指定)

NAME   <方針名>

この方針ファイルの名前を付けます。<方針名> のところで任意の名前を指定します。

たとえば次のようになります。

NAME   方針1

レコード名 NAME は行頭に記述します。ただし、前に空白・タブはあってもかまいません。レコード名 NAME とレコード本体 <方針名> の間は、1 つ以上の空白まやはタブで区切ります。この規則は以下のすべてのレコードで共通です。

COND (自動判別条件)

COND   <条件式>

このチェック方針を適用するチェック対象ファイルを指定します。各チェック対象ファイルには、[チェック方針の定義] ダイアログ ボックスにリストされた順番で最初に <条件式> が成立した方針ファイルが適用されます。

ただし、[チェック方針を指定] でチェック方針が明示指定されている対象ファイルについては、COND レコードは無効です。

<条件式> にはを指定します。この式の中では次の識別子を特別に使用できます。

識別子意味
textチェック対象ファイルの内容
fnameチェック対象ファイルの名前 (フルパス)

この <条件式> に記述した単独の /<正規表現>/text =~ /<正規表現>/ と読み替えられます。この略記法は他のレコードでも共通に使用できます。

たとえば次のようになります。

COND   /明細書/
  ; ↑ ファイル内容に「明細書」が含まれるもの
COND   text =~ /明細書/
  ; ↑ 同上
COND   fname =~ /\.txt/
  ; ↑ ファイル名の拡張子が「.txt」であるもの
COND   /明細書/ && fname =~ /\.txt/
  ; ↑ 上の 2 つの条件を兼ね備えるもの
COND   .
  ; ↑ すべてのファイル

BAN (禁止表現)

BAN   <正規表現>

BAN   /<正規表現>/

チェック対象ファイルに出現してはならない文字列を正規表現で指定します。

正規表現は、上の 1 行目のように直接指定するか、または正規表現を /.../ で囲んで指定します。このことは MUST、UNIQ、UNIQS、SEQ、SEC、NSEC、SECS、NSECS レコードに指定する正規表現についても同様です。

チェック対象ファイルに禁止表現が使用されていると、次のような通知メッセージが表示されます。

#40010: 禁止表現「/<使わない表現>/」があります

> test.txt(20): これは <使わない表現> です。

上の「test.txt(20)」は、test.txt ファイルの 20 行目にこの文字列があることを示しています。Word 文書ファイルなど、テキスト形式以外のファイルでは行番号は表示されません。

ジャンプ

上の例の 1 行目をダブルクリックすると、チェック方針ファイルの該当箇所にジャンプします。2 行目をダブルクリックすると、チェック対象ファイルの該当箇所にジャンプします(テキストファイルと Word 文書の場合のみ)。

下部ペインの該当箇所にカーソルを置き、Ctrl+Q を押すか [表示] メニューに [該当箇所へジャンプ] を選択することによっても、同様にジャンプできます。なお、Tab キーでカーソルの位置を上部ペインと下部ペインの間で切り替えることができます。

他のレコードによるチェック結果についても同様にジャンプできます。

※チェック後に Word 文書を編集した場合は、ジャンプ先の位置がずれるときがあります。Word がインストールされていない場合はジャンプできません。また .rtf ファイルではジャンプできません。

MUST (必須表現)

MUST   <正規表現>

MUST   /<正規表現>/

チェック対象ファイルに必ず出現しなければならない文字列を正規表現で指定します。

SEC レコードを使用して、特定の範囲に出現すべき文字列を指定することもできます。

UNIQ (一貫性チェック)

UNIQ   <正規表現>,<正規表現>,<正規表現>,...

UNIQS   <正規表現>

チェック対象ファイル内で表現を統一する文字列を指定します。

たとえば「既に」と「すでに」が混在してはならない場合は、次のいずれかを指定します。

UNIQ   既に,すでに

UNIQS   既に|すでに

UNIQ レコードでは、2 つ以上の正規表現をカンマ (,) 区切って指定します(正規表現自体の中にカンマを記述する場合は「\,」とエスケープしてください)。2 つ以上の正規表現がチェック対象ファイル内のどこかで一致すると、通知メッセージが表示されます。

UNIQS レコードでは、単一の正規表現を指定します。この正規表現がチェック対象ファイル内で一致した実際の文字列が複数種類あると、通知メッセージが表示されます。上の例は次のように書いても同じことです。

UNIQS   (既|すで)に

SEQ (連番チェック)

SEQ   <特殊な正規表現>

特定の文字列が連続番号になっているかどうかをチェックします。上の <特殊な正規表現> には、連番部分を示す (?#...) または (??#...) を必ず 1 つ含めます。たとえば次のようになります。

SEQ   【請求項(?#1)】
SEQ   【請求項(??#1)】

このように指定すると、チェック対象ファイル内で 【請求項[1-9][0-9]*】に一致する文字列の数字部分が1、2、3、...、8、9、10、11、12、... の連続番号になっているかどうかがチェックされます。

(?#...)(??#...) の違いは、最初の番号の繰り返しを検出するかどうかです。たとえば 1 の次にまた 1 があるケースは、(?#1) では検出されませんが、(??#1) では検出されます。

上の (?#1) のような連番部分を示す特殊表現としては、以下のものが使用できます。

特殊表現同等の正規表現連続番号
(?#0)[0-9]+ 0 1 2 3 ... 9 10 11 12 ...
(?#1)[1-9][0-9]* 1 2 3 ... 9 10 11 12 ...
(?#0)[0-9]+ 0 1 2 3 ... 9 10 11 12 ...
(?#1)[1-9][0-9]* 1 2 3 ... 9 10 11 12 ...
(?#〇)[〇一二三四五六七八九]+ 〇 一 二 三 ... 九 一〇 一一 一二 ...
(?#一)[一二三四五六七八九][〇一二三四五六七八九]* 一 二 三 ... 九 一〇 一一 一二 ...
(?#十)([二三四五六七八九]?百)?([二三四五六七八九]?十)?[一二三四五六七八九]? 一 二 三 ... 九 十 十一 十二 ... 九十九 百 百一 ... 九百九十九
(?#@)[@-S] @ A B ... H I J K ... R S
(?#T)[T-]] T U V ... \ ]
(?#@)[@-I] @ A B ... H I
(?#A)[A-Z] A B C D E ... X Y Z
(?#a)[a-z] a b c d e ... x y z
(?#A)[A-Z] A B C D E ... X Y Z
(?#a)[a-z] a b c d e ... x y z
(?#ア)[アイウエオカキ<中略>レロワヲン] ア イ ウ エ オ カ キ ... レ ロ ワ ヲ ン
(?#イ)[イロハニホヘト<中略>ヒモセスン] イ ロ ハ ニ ホ ヘ ト ... ヒ モ セ ス ン
(?#あ)[あいうえおかき<中略>レロワオン] あ い う え お か き ... れ ろ わ を ん
(?#い)[いろはにほへと<中略>ひもせすん] い ろ は に ほ へ と ... ひ も せ す ん
(?#ア)[アイウエオカキ<中略>レロワヲン] ア イ ウ エ オ カ キ ... レ ロ ワ ヲ ン
(?#イ)[イロハニホヘト<中略>ヒモセスン] イ ロ ハ ニ ホ ヘ ト ... ヒ モ セ ス ン
※例 1
(?#I,II,III,IV,V)
I|II|III|IV|V I II III IV V
※例 2
(?#I,II?,III)
I|II|III I II III
I III

例 1 の (?#I,II,III,IV,V) のように、具体的な連番のリストをカンマ区切りで指定することもできます。区切り文字でない「,」自体を表現するには「\,」と記述します。「\」も特殊文字として扱われ、「\」自体を表現するには「\\」と記述します。

例 2 の II? のように末尾に ? を付記した項目は、省略可能です。末尾の ? を通常の文字として認識させるには「\?」と記述します。

CHECK (一般チェック)

CHECK   <条件式>

論理値(ブール値・真偽値)に評価される<条件式> に指定します。式が真でなければ通知メッセージが表示されます。この式の中では次の識別子を特別に使用できます。

識別子意味
textチェック対象ファイルの内容(SEC レコード等の影響を受ける)
TEXTチェック対象ファイルの全内容(SEC レコード等の影響を受けない)
fnameチェック対象ファイルの名前 (フルパス)

たとえば、MUST レコードでは指定の表現が出現するかどうかしかチェックできませんが、CHECK レコードを使用すると、次のように「3 回以上出現しているか」という確認も可能になります。

CHECK   /<正規表現>/.count >= 3

SEC (範囲限定)

SEC   <正規表現>
...
END

チェック対象の範囲を <正規表現> に一致する部分に限定します。SEC から END の間に記述されたレコードによるチェックは、限定された範囲に対してのみ実行されます。

<正規表現> 内に ( ) がある場合は、最初の ( ) に一致した部分だけが対象範囲になります。対象範囲を変えずに ( ) を使いたい場合は、代わりに (?: ) を使用してください。

たとえば次のようになります。

SEC   【タイトル】(?cx:\n【)*\n
BAN 禁止語句
END

こうすると、「【タイトル】」から行頭の「【」までの間に「禁止語句」が出現したら通知メッセージが表示されます。

次のように SEC ブロックを入れ子にすることもできます。

SEC   【大タイトル】(?cx:\n【)*\n
SEC   「[^「」]*」
BAN 禁止語句
END
END

こうすると、「【タイトル】」から行頭の「【」までの間にある「...」の中に「禁止語句」が出現したら通知メッセージが表示されます。

NSEC (範囲除外)

NSEC   <正規表現>
...
END

SEC とは反対に、チェック対象の範囲を <正規表現> に一致しない部分に限定します。

SECS (範囲限定・一括)

SECS   <正規表現>
...
END

SEC と似ていますが、<正規表現> に一致する部分が複数あるとき、SEC が各範囲を 1 つずつチェックするのに対して、SECS は各範囲を 1 つにまとめてチェックします。

この違いは MUST、UNIQ、UNIQS、SEQ レコードによるチェックに影響します。SEC 中に MUST を記述すると、各範囲それぞれについて必須表現が出現しないと通知メッセージが表示されますが、SECS 中に MUST を記述すると、各範囲のどこにも必須表現が出現しないときに通知メッセージが表示されます。UNIQ、UNIQS、SEQ についても同様に、SEC と SECS では、各範囲を個別にチェックするか、各範囲を連結したテキストをチェックするかの違いが生じます。

NSECS (範囲除外・一括)

NSECS   <正規表現>
...
END

SECS とは反対に、チェック対象の範囲を <正規表現> に一致しない部分に限定します。

IF (条件ブロック)

IF   <条件式A>
...(A)...
ELSIF   <条件式B>
...(B)...
ELSE
...(C)...
END

条件式に応じて、有効にするチェック方針レコードを切り替えます。

上の例では、最初の <条件式A> が真の場合は、(A) に定義されているチェック方針レコードが有効になります。<条件式A> が偽で <条件式B> が真の場合は、(B) に定義されているチェック方針レコードが有効になります。どちらの条件式も偽の場合は、(C) に定義されているチェック方針レコードが有効になります。

ELSIF レコードはいくつでも記述できます。ELSIF レコードと ELSE レコードは、記述しなくてもかまいません。

LET (変数への代入)

LET   <変数名> = <式>

変数を定義して、後の他のレコードの式の中で使用できます。

次に例を示します。

LET result = /電話番号:([^\n]*)/.hits[0]
ECHO 電話番号は <% result %> です

EACH (配列の各要素上を巡回)

EACH   <変数名> IN <配列>
...
END

<配列> の要素の数だけ ... に定義されているチェック方針レコードを繰り返します。<変数名> には各要素の値が代入されます。

次に例を示します。

EACH tel IN /電話番号:([^\n]*)/.hitss[0]
ECHO 電話番号は <% tel %> です
END

IMPORT (他の方針ファイルの取り込み)

IMPORT   <方針名>

他の方針ファイルの内容をこの場所に取り込みます。

ECHO (メッセージの表示)

ECHO   <文字列>

このレコードが実行されると、<文字列> がメッセージとして下部ペインに表示されます。

<文字列> 中に <%%> で囲んでを記述すると、<% ... %> の部分が式を評価した結果で置き換わります。式が文字列以外に評価された場合は、評価結果に to_s() を適用した結果が使用されます。

次に例を示します。

ECHO 文字列「ABC」が <% /ABC/.count %> 個あります。

<文字列> 中で <% という文字列自体を表示するには、<%% と記述します。

dsp(...)

CHECK、ECHO、IF、ELSIF、LET レコードで、の中にある検索結果文字列、整数、小数、論理値を dsp(...) で囲んでおくと、... の評価結果が表示されます。CHECK レコードでは、チェックが失敗した場合にのみ表示されます。

次の例では、TEL:... と FAX:... の電話番号が同じでない場合、該当する検索結果文字列が表示されます。

CHECK   dsp(/TEL:([0-9\-]+)/.hits[0]) == dsp(/FAX:([0-9\-]+)/.hits[0])

dsp() で表示された検索結果文字列をダブルクリックすると、チェック対象ファイルの該当箇所にジャンプします(テキストファイルと Word 文書の場合のみ)。