ColdFusion MX
目 次 > CFML リファレンス > ColdFusion 関数 > REFindNoCase O

REFindNoCase

正規表現 (RE) を使用して、パターンに一致する文字列を指定位置以降から検索します。この検索では大文字と小文字は区別されません。

正規表現や、そのエスケープシーケンス、アンカー、および修飾子の詳細については、『ColdFusion MX アプリケーションの開発』の第7章「関数での正規表現の使用」 を参照してください。

returnsubexpressions パラメータの値によって異なります。

文字列関数

REFindNoCase(reg_expression, string [, start] [, returnsubexpressions] )

FindFindNoCaseREFindREReplaceREReplaceNoCase

パラメータ

説明

reg_expression

検索に使用する正規表現です。大文字と小文字は区別されません。

詳細については、『ColdFusion MX アプリケーションの開発』の第7章「関数での正規表現の使用」 を参照してください。

string

文字列、または文字列を含んでいる変数です。検索対象の文字列を指定します。

start

オプションです。正の整数、または正の整数を含んでいる変数です。検索を開始する位置を指定します。デフォルトは、 1。

returnsubexpressions

オプションです。reg_expression に一致した部分文字列を、配列 len および pos として返すかどうかを指定するブール値です。

  • true:正規表現に一致する部分が見つかった場合は、その長さと位置が、両配列の先頭要素にそれぞれ格納されます。
    正規表現の中に括弧でグループ化されている部分がある場合には、後続の各配列要素には、各グループに最初に一致した部分文字列の長さと位置がそれぞれ格納されます。
    正規表現に一致する部分が見つからなかった場合は、両配列の要素数は 1 となり、要素の値として 0 が格納されます。
  • false:文字列内で正規表現に一致した部分の先頭位置が返されます (デフォルト)。

この関数は、文字列内で最初に出現する正規表現を検索します。正規表現、またはその中の部分文字列が 2 回め以降に出現する箇所を検索するには、この関数を複数回、そのつど開始位置を変えて呼び出します。次回の開始位置を決定するには、returnsubexpressions パラメータを使用し、len 配列と pos 配列のそれぞれの先頭要素に返された値の和を求めます。

<h3>REFindNoCase の例</h3>
<p>この例では、REFindNoCase 関数の使用法を、<i>returnsubexpressions</i> パラメータを true に設定する場合としない場合それぞれについて示します。</p>
<p><i>returnsubexpressions</i> パラメータを使わない場合、REFindNoCase 関数は、文字列内の指定位置以降を検索し、正規表現に一致する部分の最初の出現位置を返します。一致する部分が見つからなかった場合は 0 を返します。</p>
<p>REFindNoCase("a+c+", "abcaaccdd"):   
<cfoutput>#REFindNoCase("a+c+", "abcaaccdd")#</cfoutput></p>
<p>REFindNoCase("a+c*", "abcaaccdd"):   
<cfoutput>#REFindNoCase("a+c*", "abcaaccdd")#</cfoutput></p>
<p>REFindNoCase("[[:alpha:]]+", "abcaacCDD"):   
<cfoutput>#REFindNoCase("[[:alpha:]]+", "abcaacCDD")#</cfoutput></p>
<p>REFindNoCase("[¥?&]rep = ", "report.cfm?rep = 1234&u = 5"):
<cfoutput>#REFindNoCase("[¥?&]rep = ", "report.cfm?rep = 1234&u = 5")#
</cfoutput></p> <!--- 開始位置を 1 に、returnsubexpressions を TRUE に設定 ---> <hr size = "2" color = "#0000A0"> <p><i>returnssubexpression</i> パラメータを使う場合、REFindNoCase 関数は、文字列内の指定位置以降を検索し、正規表現に一致する部分の最初の出現位置および長さを返します。一致する各部分の位置と長さは、すべて 1 つの構造体に格納されます。これらの情報を取り出すには、<i>pos</i> キーと <i>len</i> キーをそれぞれ使用します。</p> <cfset teststring = "The cat in the hat hat came back!"> <p>この関数が検索する対象の文字列 :<cfoutput><b>#teststring#</b></cfoutput></p> <p>この文字列内を検索する最初の REFindNoCase 呼び出し : <b>REFindNoCase("[[:alpha:]]+",testString,1,"True")</b></p> <p>この関数は、pos と len という2 つの配列を持つ構造体を返します。</p> <p>この構造体は、CFSET ステートメントを使用して作成できます。次に例を示します。</p> &lt;CFSET st = REFindNoCase("[[:alpha:]]+",testString,1,"True")&gt; <cfset st = REFindNoCase("[[:alpha:]]+",testString,1,"True")> <p> <cfoutput> 各配列の要素数 :#ArrayLen(st.pos)# </cfoutput></p> <p><b>正規表現内で括弧を使ってグループを指定しない場合、pos 配列と len 配列の要素数は常に 1 となります。</b></p> <p>st.pos[1] の値 :<cfoutput>#st.pos[1]#</cfoutput></p> <p>st.len[1] の値 :<cfoutput>#st.len[1]#</cfoutput></p> <p> <cfoutput> 部分文字列は <b>[#Mid(testString,st.pos[1],st.len[1])#]</B> です。 </cfoutput></p> <hr size = "2" color = "#0000A0"> <p>一方、正規表現内で括弧を使ってグループを指定した場合は、配列の先頭要素には、正規表現全体に最初に一致した部分の位置と長さが格納されます。括弧で囲まれた各グループに最初に一致した部分の位置と長さは、2 番め以降の配列要素に格納されます。</p> <p>次に例を示します。 &lt;CFSET st1 = REFindNoCase("([[:alpha:]]+)[ ]+(¥1)",testString,1,"True")&gt;</p> <cfset st1 = REFindNoCase("([[:alpha:]]+)[ ]+(¥1)",testString,1,"True")> <p>各配列の要素数 : <cfoutput> #ArrayLen(st1.pos)# </cfoutput></p> <p>正規表現全体に最初に一致した位置は <cfoutput> #st1.pos[1]#、長さは #st1.len[1]# です。 正規表現全体に一致した文字列は <B>[#Mid(testString,st1.pos[1],st1.len[1])#]</B> です。 </cfoutput></p> <p>2 番め以降の配列要素は、括弧で囲まれた各グループに一致する部分が最初に出現した位置と長さを表します。</p> <cfloop index = "i" from = "2" to = "#ArrayLen(st1.pos)#"> <p><cfoutput>位置は #st1.pos[i]#、長さは #st1.len[i]# です。 部分文字列は <B>[#Mid(testString,st1.pos[i],st1.len[i])#]</B> です。 </cfoutput></p> </cfloop><br>

目 次 > CFML リファレンス > ColdFusion 関数 > REFindNoCase O