REFINDNOCASE | |
説明
正規表現 (RE) を使用して、パターンに一致する文字列を指定位置以降から検索します。この検索では大文字と小文字は区別されません。 正規表現や、そのエスケープシーケンス、アンカー、および修飾子の詳細については、『ColdFusion MX 開発ガイド』の第7章の「関数での正規表現の使用」 を参照してください。 |
|
戻り値
returnsubexpressions パラメータの値により異なります。
|
|
カテゴリ
文字列関数 |
|
関数のシンタックスREFindNoCase(reg_expression, string [, start] [, returnsubexpressions] ) |
|
関連項目
Find、FindNoCase、REFind、REReplace、REReplaceNoCase |
|
パラメータ
|
|
使用方法
この関数は、文字列内で最初に出現する正規表現を検索します。正規表現、またはその中の部分文字列が 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> <CFSET st = REFindNoCase("[[:alpha:]]+",testString,1,"True")> <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>次に例を示します。 <CFSET st1 = REFindNoCase("([[:alpha:]]+)[ ]+(1)",testString,1,"True")></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> |
REG_EXPRESSION | |
検索に使用する正規表現です。大文字と小文字は区別されません。 | |
詳細については、『ColdFusion MX 開発ガイド』の第7章の「関数での正規表現の使用」 を参照してください。 |
STRING | |
文字列、または文字列を含んでいる変数です。検索対象の文字列を指定します。 |
START | |
オプションです。正の整数、または正の整数を含んでいる変数です。検索を開始する位置 を指定します。デフォルト値は 1 です。 |
RETURNSUBEXPRESSIONS | |
オプションです。reg_expression に一致した部分文字列を、配列 len および pos として返
すかどうかを指定するブール値です。
|