正規表現ベースのソリューションを提供する場合、「最良」と答えたものが最も洗練されたものであることが重要です。これは、最も正確な結果を提供することを意味し、結果の正確さに繋がりがある場合、パフォーマンスは次の基準になり、それに伴いパターンの簡潔さが求められます。
このため、現在受け入れている回答よりも優れた回答を投稿することを余儀なくされています。私はV_RocKsがssc-hrep3の答えのコメントに使用する変数名を使用します。
第一サンプル列を使用してコード:
$query="this has four character words or higher";
$query=preg_match("/[^ ]{4,}/",$query)?str_replace(" ","",$query):$query;
echo "$query";
出力:第二のサンプル列を用い
thishasfourcharacterwordsorhigher
コード:
$query="hd 1 kit";
$query=preg_match("/[^ ]{4,}/",$query)?str_replace(" ","",$query):$query;
echo "$query";
出力:
hd 1 kit
正規表現のパターンは正確に正確であるだけでなく、より短く効率的です(手順が少なくて済みます)。この質問では、境界文字の使用は不要であり、パフォーマンスに50%近く悪影響を及ぼします。
パターンから単語境界を削除した後、目的の部分文字列をターゲットにする方法はいくつかあります。次のパターンはまったく同じ意味とsteps
数を持っている:
/[a-zA-Z0-9]{4,}/
/[a-z0-9]{4,}/i
/[a-z\d]{4,}/i
/[^ ]{4,}/
私のポイントは次のとおりです。読者が検索でSOに来ていません"meh、it's good enough"の回答、彼らはここに来て、才能のある膨大なナレッジベース多様なSOコミュニティ。将来の読者が私たちの洞察から学び、コーディング言語が提供しなければならないすべてのことについて学ぶことができるように、すべての回答に対して可能な限り最良のアプローチを達成しようとします。
準最適なパターンがSOにグリーンマークされている場合、コーディングタスクを実行する最良の方法について読者に適切な教育をする機会がありません。
ありがとうございました。完璧に働いて、私は思っていたはずです。なぜなら、少なくとも1単語4文字とその真偽を検索してみてはいかがですか?どうもありがとう! –
*少なくとも* 4文字の* 1つの単語だけが必要だと思えば、もっと簡単にすることができます。 –
@CasimiretHippolyte SOの良い人の一人が私にこのような文字列をくれたので、私はそれを変更しました。私はSahilです。これは '4'文字の単語を持っていませんが、許可しないでください。 –