ColdFusion アプリケーション開発ガイド
|
|
関数での正規表現の使用
|
正規表現の基本ルール
ここでは、1 文字の正規表現を含む、正規表現 (RE) の作成についての基本ルールを説明します。
正規表現の基本ルールを次に示します。
- 特殊文字
+ * ? . [ ^ $ ( ) { |
¥
を使用します。
- 特殊文字でない文字は、その文字自体を照合します。
- 特殊文字が後ろに続く円記号 (¥) は、リテラル文字を照合します。つまり、円記号 (¥) は、特殊文字をエスケープ処理します。
- ピリオド (.) は、改行文字を含む、すべての文字を照合します。 改行文字以外の文字を照合するには、[^#chr(13)##chr(10)#] を使用します。これには、ASCII の改行およびライン フィード コードは含まれません。 対応するエスケープ コードは、¥r および ¥n です。
- 大カッコ ([]) で囲まれた文字セットは、そのセット内の任意の文字を照合する 1 文字の正規表現を表します。 たとえば、"[akm]" は、"a"、"k"、"m" のいずれかの文字を照合します。 中カッコで囲まれた文字セット内のハイフンは、文字の範囲を示します。たとえば、[a-z] はすべての小文字を照合します。
- 文字セットの最初の文字がカレット (^) の場合は、文字セット内の文字以外の文字を照合します。 空の文字列は照合されません。 "[^akm]" は、"a"、"k"、"m" 以外のいずれかの文字を照合します。 カレットが文字セットの最初の文字ではない場合、カレットは、意味を持ちません。
- 個々の文字を、たとえば [Nn][Ii][Cc][Kk] のような文字セットと置き換えると、正規表現で大文字と小文字が区別されないようにすることができます。
- 大カッコ内に右大カッコ (]) を含める場合は、右大カッコを最初の文字にする必要があります。 それ以外の場合は、¥] を使用しても、正しく動作しません。 上記の例を示します。
<!--- 右大カッコ
(]) およびすべての 'a' を * で置き換えます。 --->
<cfset strSearch = "[Test message]">
<!--- ] が [] 内の最初の文字でないため、
次の行は機能しません。 --->
<cfset re = "[a
¥]]">
<cfoutput>REReplace(#strSearch#,#re#,"*","ALL") -
#REReplace(strSearch,re,"*","ALL")#<br>
']' が後に続く 'a' を検索しているため、
']' および 'a' のどちらも置き換えられません。<br>
</cfoutput>
<!--- ] が [] 内の最初の文字であるため、次の行は機能します。 --->
<cfset re = "[]a]">
<cfoutput>REReplace(#strSearch#,#re#,"*","ALL") -
#REReplace(strSearch,re,"*","ALL")#<br>
'a' および ']' はどちらも * で置き換えられます。<br></cfoutput>
文字クラス
ColdFusion の正規表現では、POSIX 文字クラスの 1 つを使用して文字を指定できます。 次の例に示すように、文字クラス名は 2 つの大カッコで囲みます。
REReplace ("Macromedia Web Site","[[:space:]]","*","ALL")
このコードでは、スペースはすべて * で置き換えられ、次の文字列が生成されます。
Macromedia*Web*Site
次の表は、ColdFusion でサポートされている POSIX 文字クラスを示します。
文字クラス |
照合 |
alpha
|
すべての文字を照合します。 [A-Za-z] と同様です。
|
upper
|
すべての大文字を照合します。 [A-Z] と同様です。
|
lower
|
すべての小文字を照合します。 [a-z] と同様です。
|
digit
|
すべての桁を照合します。 [0-9] と同様です。
|
alnum
|
すべての英数字を照合します。 [A-Za-z0-9] と同様です。
|
xdigit
|
すべての 16 進数字を照合します。 [0-9A-Fa-f] と同様です。
|
space
|
タブ、改行、垂直方向のタブ、フォーム フィード、改行、スペースのいずれかを照合します。
|
print
|
すべての印刷可能な文字を照合します。
|
punct
|
すべての句読記号文字 (! # S % & ` ( ) * + , - . / : ; < = > ? @ [ / ] ^ _ { | } ) を照合します。
|
graph
|
space 文字クラスの一部として定義された文字を除き、印刷可能な文字として定義されたすべての文字を照合します。
|
cntrl
|
[:upper:]、[:lower:]、[:alpha:]、[:digit:]、[:punct:]、[:graph:]、[:print:]、[:xdigit:] のいずれかの文字クラスの一部ではない、すべての文字を照合します。
|
Copyright © 2001, Macromedia Inc. All rights reserved. |
|