ColdFusionで正規表現を使って部分文字列を取得したい
調べたらこんな感じで取れるらしい。
照合された部分文字列の戻し
関数を作ってみた
<!--- 正規表現で部分文字列を取得する関数 --->
<CFFUNCTION name="REArray" returntype="array">
<CFARGUMENT name="reg_ex" type="string" required="true">
<CFARGUMENT name="target_str" type="string" required="true">
<CFSET local.regex = REFindNoCase(reg_ex, target_str, 1, true)>
<CFSET local.aResult = arrayNew(1)>
<CFLOOP from="1" to="#arrayLen(local.regex.pos)#" index="i">
<CFIF local.regex.pos[i] neq 0>
<CFSET arrayAppend(local.aResult, mid(target_str, local.regex.pos[i], local.regex.len[i]))>
</CFIF>
</CFLOOP>
<CFRETURN local.aResult>
</CFFUNCTION>
使用例
<CFSET aResult = REArray("^【(\d+)月(\d+)日.+】(.+)おまかせ御膳((.+))$", "【8月30日(木)】雑穀米220gおまかせ御膳(海老チリ&シューマイ)")>
<CFDUMP var="#aResult#">