プロセルピナ
Top
Internet
Mail
Private
Proxy
Capture
Device
Download
Config
and
Words
Online
Help
Online
Home
[BACK]
☞
Top
>
Proserpine Macro
>
Commands
> file regexFilter
file regexFilterコマンド
Macro Top
|
Variables
|
Commands
一致する行の抽出
file regexFilter: dir=
(input_filepath)
file=
(input_filename)
encode=
(inputfile_encode)
regex=
(pattern_string)
dir=
と
file=
で指定されたテキストファイルの各行に対し、 .NETの正規表現(Regular Expression)を使用して
regex=
で指定されたパターンにマッチする行を抽出します。
入力ファイル名は、
dir=
と
file=
で指定します。
file=
にフルパスで指定する場合は、
dir=
の指定を行いません。
入力ファイルのエンコードは
encode=
で指定します。例えば、 encode="Shift_JIS" のように記述します。
encode=
指定を省略した場合、入力ファイルの先頭行にエンコードタイプが US-ASCIIで記述されているものとして扱います。 記述が無かった場合はデフォルトの UTF-8 でデコードします。
出力先をファイルにする場合、
output.file=
にフルパスで指定します。
出力ファイルのエンコードは
output.encode=
で指定します。省略した場合、
encode=
と同じ値を使用します。
次の例では、ファイル F:\work\test\testfile.txt の各行に対して、
[!]
の文字列が含まれるかをチェックし、 含まれていた場合に その行全体を出力します。
:Start { str["targetDir"]="F:\work\test".surrogate; str["targetFile"]="testfile.txt"; str["key"]="\[!\]".surrogate; file regexFilter: dir=str["targetDir"] file=str["targetFile"] encode="UTF-8" regex=str["key"]; end: }
文字列 [!] を含む行を抽出
マッチングを行う正規表現パターンは、 正規表現メタ文字の
[
記号
と
]
記号
をエスケープする必要があるので、
\[!\]
になります。
プロセルピナの文字列で扱う場合、更にこの \
記号
をエスケープする必要があるので、
\\[!\\]
と記述するか、\
記号
を 全角(\
記号
または¥
記号
)で書いて surrogateメソッドで \
記号
に変換します。
一致する行の置換
file regexFilter: dir=
(input_filepath)
file=
(input_filename)
encode=
(inputfile_encode)
regex=
(pattern_string)
replace=
(replacement_string)
dir=
と
file=
で指定されたテキストファイルの各行に対し、 .NETの正規表現(Regular Expression)を使用して
regex=
で指定されたパターンにマッチする行があれば
replace=
のパターンで置換して出力します。
regex=
でマッチしない行は、そのまま出力されます。
入力ファイル名は、
dir=
と
file=
で指定します。 入力ファイルのエンコードは
encode=
で指定します。
(詳細は上記
「
一致する行の抽出
」
を参照)
出力先をファイルにする場合、
output.file=
にフルパスで指定します。
出力ファイルのエンコードは
output.encode=
で指定します。省略した場合、
encode=
と同じ値を使用します。
次の例では、プロセルピナマクロファイル "英和/和英.txt" の各行に含まれる単語を
\w+
の正規表現で検出し、
<$&>
の置換パターンで置換して出力します。
:Start { str["targetDir"]="{{GTMAIL_HOME}}\ctrl\macro".surrogate; str["targetFile"]="英和/和英.txt"; str["key"]="\w+".surrogate; file regexFilter: dir=str["targetDir"] file=str["targetFile"] regex=str["key"] regex.replace="<$&>"; end: }
単語を全て <~> で囲む
.NETの正規表現では
<
記号
及び、
>
記号
はメタ文字ではなく、普通の文字として扱われます。
【参考】 置換パターンのメタ文字 (.NET Regular Expression)
置換パターン
機能
$n
n番目のグループでキャプチャされた文字列
$$
“$”そのもの
$&
正規表現に一致した文字列全体
$+
最後のグループにキャプチャされた文字列
$_
入力文字列全体
[BACK]
プロセルピナ