Swim Manager: ユーザーズガイド
前へ 次へ 目次

3.5.4 正規表現エンジン

ログ変換情報設定ユーティリティで使用する正規表現の詳細について説明します。

ログ変換情報設定ユーティリティでは、文字列置換を処理する正規表現エンジンとして、以下のいずれかを選択できます。

ATLを使用

ATLのCAtlRegExp クラスを使用します。

参考:
http://msdn.microsoft.com/ja-jp/library/k3zs4axe(VS.80).aspx

Regex++を使用

Rogue Wave(http://www.roguewave.com/)のStingray Studio付属の正規表現ライブラリRegex++を使用します。(日本語未対応、常にグローバルマッチで置換)

参考:(以下のリンク先の情報は、Swim Manager で使用しているRegex++とバージョンが異なります。)
http://www.boost.org/doc/libs/1_39_0/libs/regex/doc/html/index.html

VBScriptを使用

VBScriptの正規表現ライブラリRegExpを使用します。

参考:
http://www.microsoft.com/japan/msdn/columns/scripting/scripting051099.aspx

弊社では、これらの持つすべての正規表現コマンドのサポートは行っていません。以下では、正規表現コマンドのうち、よく使用するものについて、弊社での動作確認結果とともに説明します。

各正規表現エンジンのより詳細な仕様については、上記参考リンク先のWebページを参照してください。

3.5.4.1 検索文字列で使用できる構文

検索文字列で使用できる構文について、以下、種類ごとに説明します。

位置マッチング

文字列や単語の位置(先頭、末尾)にマッチさせることができます。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考・注意事項

ATL

Regex++

VBScript

^

文字列の先頭にのみマッチします。例えば、"^A" は "A123 A456A789" の最初の "A" にマッチします。


$

文字列の末尾にのみマッチします。例えば、"b$" は "b 123b 456b" の最後の "b" にマッチします。


\<

単語の先頭にマッチします。

-

-


\>

単語の末尾にマッチします。

-

-


リテラル

リテラル(英数字、ASCII、8進文字、16進文字、Unicode、または特殊なエスケープ文字)にマッチするシンボルです。正規表現として意味を持つ文字を表すためには、文字の前に "\" を置き、エスケープ文字として記述します。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

英数字

記述した通りに、英数文字にマッチします。


\?

? にマッチします。


\*

* にマッチします。


\+

+ にマッチします。


\.

. にマッチします。


\|

| にマッチします。


\{

{ にマッチします。


\}

} にマッチします。


\\

\ にマッチします。


\[

[ にマッチします。


\]

] にマッチします。


\(

( にマッチします。


\)

) にマッチします。


\^

^ にマッチします。


\$

$ にマッチします。


\xxx

8進数 xxx で表されるASCII文字にマッチします。例えば、"\41" は "!"(文字コード0x21)を表します。

-


\xdd

16進数 dd で表されるASCII文字にマッチします。例えば、"\x21" は "!"(文字コード0x21)を表します。

-

Regex++ の場合は "\x{aff}" と記述すると Unicode になります。次項を参照してください。

\x{xxxx}

Unicode xxxx で表されるASCII文字にマッチします。

-

-

実質、ログ変換情報では使用できません。

\uxxxx

Unicode xxxx で表されるASCII文字にマッチします。例えば、"\u00A1" は "¡" にマッチします。

-

-

実質、ログ変換情報では使用できません。

文字クラス

特定の種類の文字グループにマッチさせることができます。角括弧 [ ] で囲むシンボルと、エスケープ記号(\)と文字の組み合わせで表されるシンボルがあります。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

[xyz]

[ ] 内に含まれる任意の1文字にマッチします。"-"を使用すると、文字の範囲を指定できます。例えば正規表現 "[a-e]" は、 "abcf" の "a" にマッチし、"xxxefg" の "e" にマッチします。


[^xyz]

^ は、否定を示します。[ ] 内の ^ よりあとの文字を含まない任意の1文字にマッチします。例えば正規表現 "[^a-e]" は、 "abcf" の "f" にマッチし、"xxxefg" の "x" にマッチします。


.

\n 以外の任意の文字にマッチします。


\a

任意の英数字にマッチします。[a-zA-Z0-9]と同じです。

-

-

Regex++版では機能が異なります。

\b

空白文字にマッチします。[ \t]と同じです。

-

-

Regex++版、VBScript版では機能が異なります。

\c

任意の英字にマッチします。[a-zA-Z]と同じです。

-

-


\d

任意の10進数字にマッチします。[0-9]と同じです。


\D

任意の数字以外の文字にマッチします。[^0-9]と同じです。

-


\h

任意の16進数字にマッチします。[0-9a-fA-F]と同じです。

-

-


\l

任意の英小文字にマッチします。

-

-


\L

任意の英小文字以外の文字にマッチします。

-

-


\q

引用符で囲まれた文字列にマッチします。(\"[^\"]*\")|(\'[^\']*\')と同じです。

-

-


\s

任意のスペース文字にマッチします。[ \t\r\n\v\f]と同じです。

-


\S

任意の非スペース文字にマッチします。[^ \t\r\n\v\f]と同じです。

-


\u

任意の英大文字にマッチします。

-

-


\U

任意の英大文字以外の文字にマッチします。

-

-


\w

単語に使用される任意の文字にマッチします。[a-zA-Z_0-9]と同じです。

-

ATL版では機能が異なります。

\w

単語にマッチします。[a-zA-Z]+と同じです。

-

-

Regex++版、VBScript版では機能が異なります。

\W

単語に使用される文字以外の任意の文字にマッチします。[^a-zA-Z_0-9]と同じです。

-


\z

正の整数にマッチします。[0-9]+と同じです。

-

-

Regex++版では未サポートの機能に割り当てられています。

[:alnum:]

任意の英数字にマッチします。

-

-

C/C++のisalnum関数の判定と同様です。

[:alpha:]

任意の英字にマッチします。[a-zA-Z]と同じです。

-

-

C/C++のisalpha関数の判定と同様です。

[:blank:]

任意のブランク文字にマッチします。[ \t]と同じです。

-

-


[:cntrl:]

任意の制御文字にマッチします。

-

-

C/C++のiscntrl関数の判定と同様です。

[:digit:]

任意の10進数字にマッチします。[0-9]と同じです。

-

-

C/C++のisdigit関数の判定と同様です。

[:graph:]

空白を除く任意の表示文字にマッチします。

-

-

C/C++のisgraph関数の判定と同様です。

[:lower:]

任意の英小文字にマッチします。

-

-

C/C++のislower関数の判定と同様です。

[:print:]

印刷可能な任意の文字にマッチします。

-

-

C/C++のisprint関数の判定と同様です。

[:punct:]

英数字・空白ではない任意の表示文字にマッチします。

-

-

C/C++のispunct関数の判定と同様です。

[:space:]

任意の空白文字にマッチします。

-

-

C/C++のisspace関数の判定と同様です。

[:upper:]

任意の英大文字にマッチします。

-

-

C/C++のisupper関数の判定と同様です。

[:xdigit:]

任意の16進数字にマッチします。

-

-

C/C++のisxdigit関数の判定と同様です。

[:word:]

単語に使用される任意の文字にマッチします。

-

-


[:unicode:]

任意のUnicode文字にマッチします。

-

-

実質、ログ変換情報では使用できません。

繰り返し

正規表現の要素の、複数回の出現を指定できます。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

{x}

直前の要素がちょうどx回出現する部分にマッチします。例えば、"\d{4}" は4桁の数字にマッチします。

-


{x,}

直前の要素がx回以上出現する部分にマッチします。"\d{3,}" は3桁以上の数字にマッチします。

-


{x,y}

直前の要素がx回以上、y回以下出現する部分にマッチします。"\d{2,6}" は2桁以上、6桁以下の数字にマッチします。

-


?

直前の要素が0回または1回出現する部分にマッチします。{0,1}と同じです。例えば、"A[0-9]?" は "A"、"A0"のどちらにもマッチします。


*

直前の要素が0回以上出現する部分にマッチします。{0,}と同じです。


+

直前の要素が1回以上出現する部分にマッチします。{1,}と同じです。例えば、"[A-C]+" は、 "A"、"BC"、"CCC" のすべてにマッチします。


??
+?
*?

?、*、+ のあとに ? を記述することで、最短マッチを指定できます。?、*、+ のみの指定では最長マッチ(一致するもっとも長い文字列にマッチ)となるのに対して、最短マッチでは、正規表現に一致するもっとも短い文字列にマッチします。

例えば、"<title>StartPage</title>" という文字列に対して、正規表現 "<.*?>" は "<title>" にマッチし、正規表現 "<.*>" は "<title>StartPage</title>" にマッチします。

-

-

Regex++版は最長マッチのみのサポートです。

選択とグループ化

ひとまとまりの範囲としてグループを指定すると、その範囲に条件を指定したり、文字列を取得して検索文字列や置換文字列に再び指定したりすることができます。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

()

囲んだ部分をグループ化して、1つの句を作成します。"(ab(cd))" のように階層で指定することもできます。例えば、"(abc)?(d)" は "abcd"、"d" のどちらにもマッチします。

Regex++版、VBScript版では、一致グループを示すためにも使用されます。カッコ内の正規表現にマッチする実際のテキストを入力文字列から取得できます。

|

選択(or条件)を指定します。指定した句のうちの任意の句にマッチします。"(abc)|(def)|(ghi)" は "abc"、"def"、"ghi"のいずれにもマッチします。


{}

一致グループを示します。囲まれた正規表現にマッチする文字列を取得できます。

-

-


その他の演算子

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

!

否定を示します。後に続く正規表現が否定されます。例えば、"A!0" は、"A0" にはマッチせず、"A1" や "A2"にはマッチします。

-

-


後方参照

括弧で囲まれた部分を参照することができます。出現順に\1、\2、・・・で文字列を参照できます。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

()\n

括弧で囲まれた句のうち、n番目の句にマッチします。例えば、"(A[0-9]+),\1" は、"A1234,A1234" のような、同じ文字列の2回の出現にマッチさせることができます。

-

ATL版とは異なり、番号は 1 から始まります。また、一致グループは小括弧 () で囲みます。

{}\n

括弧で囲まれた句のうち、n番目の句にマッチします。番号は 0 から始まります。例えば、<{.*?}>.*?</\0> は "<title>StartPage</title>" にマッチします。

-

-

Regex++版、VBScript版とは異なり、番号は 0 から始まります。また、一致グループは中括弧 {} で囲みます。

3.5.4.2 置換文字列で使用できる構文

マッチした文字列の参照

置換文字列に、検索でマッチした文字列の全体または一部を含めることができます。

検索文字列に指定した正規表現で、一致グループとして括弧で囲んだ部分を、置換文字列の中で $ 文字のあとに数字を指定することで参照できます。1番目の括弧で囲まれた部分は $1、2番目の括弧で囲まれた部分は $2、のように参照できます。検索文字列で指定する一致グループは、ATL版の場合は中括弧 {} で囲み、Regex++版、VBScript版の場合は小括弧 () で囲みます。

(○:動作確認済み、-:動作不可/未確認/対象外)

シンボル

機能

対象エンジン

備考

ATL

Regex++

VBScript

検索文字列側:()
置換文字列側:$n

n番目の括弧で囲まれた部分の文字列を表します。例えば、検索文字列で "(\d+):(\d+):(\d+)" を指定し、"11:58:30" のログが得られた場合、$1 は "11"、$2 は "58"、$3 は "30" を返します。

-

ATL版とは異なり、検索文字列では () で囲みます。

検索文字列側:{}
置換文字列側:$n

n番目の括弧で囲まれた部分の文字列を表します。例えば、検索文字列で "{\d+}:{\d+}:{\d+}" を指定し、"11:58:30" のログが得られた場合、$1 は "11"、$2 は "58"、$3 は "30" を返します。

-

-

Regex++版、VBScript版とは異なり、検索文字列では {} で囲みます。

$`

マッチした部分の前の文字列を表します。

-

-


$'

マッチした部分の後ろの文字列を表します。

-

-


$&
$0

マッチした部分全体の文字列を表します。

-

-


$

文字 $ を表します。

-

-


\$

文字 $ を表します。

-

-


$$

文字 $ を表します。

-

-


\

( ) \ ? などの特殊な文字を表示するには \ でエスケープします。

-

-


(C) 2000-2013 アライドテレシスホールディングス株式会社
J613-M0103-10 Rev.R