件名として使用している文字列は次のとおりです。
' で 3 泊 4 日のバケーションが 68% 割引。わずか249ドル!
'.\*(\b((enjoy|save)( up to| an extra)?|starting at|as low as|just|only)\b ([0-9]{1,3} ?\%|\$[0-9]+(\.[0-9]{2})?)).\*/i'
上記の文字列の一部を抽出して一致させるために使用しています。
私は'$1'
交換用として使用しているので、私のフルpreg_match
は次のようになります
preg_match('.*(\b((enjoy|save)( up to| an extra)?|starting at|as low as|just|only)\b ([0-9]{1,3} ?\%|\$[0-9]+(\.[0-9]{2})?)).*/i', '$1', 'Save 68% on a 4 Day/3 Night vacation at. Only $249!')
最初に一致する必要'Save 68%'
がありますが、返され続け'Only $249'
ます。
最初のワイルドカードの後に疑問符を追加すると、'.\*?(\b((enjoy|save)( up to| an extra)?|starting at|as low as|just|only)\b ([0-9]{1,3} ?\%|\$[0-9]+(\.[0-9]{2})?)).\*/i'
が返されることがわかりました'save 68%'
。これを回避する別の方法はありますか。それは私のグループ化に関係しているようです。私が見つけたように
preg_match('/.*\b(enjoy|save)( up to| an extra)?|starting at|as low as|just|only\b.*/i', '$1', 'Save 68% on a 4 Day/3 Night vacation at. Only $249!')
本来のように返されます'save'
が、完全なステートメントで同じことを行うことはできません。