Bei der Bereitstellung von Regex-basierten Lösungen ist es wichtig, dass die als "beste" bewertete Antwort am raffiniertesten ist. Dies bedeutet, dass ein möglichst genaues Ergebnis erzielt wird, und wenn die Genauigkeit der Ergebnisse gleich bleibt, sollte die Leistung das nächste Kriterium sein, gefolgt von der Kürze der Muster, wenn es dazu kommt.
Aus diesem Grund bin ich gezwungen, eine Antwort zu posten, die der derzeit akzeptierten Antwort überlegen ist. Ich werde den Variablennamen verwenden, den V_RocKs in einem Kommentar unter der Antwort von ssc-hrep3 verwendet.
-Code unter Verwendung eines ersten Proben string:
$query="this has four character words or higher";
$query=preg_match("/[^ ]{4,}/",$query)?str_replace(" ","",$query):$query;
echo "$query";
Output:
thishasfourcharacterwordsorhigher
-Code-String zweiten Probe unter Verwendung:
$query="hd 1 kit";
$query=preg_match("/[^ ]{4,}/",$query)?str_replace(" ","",$query):$query;
echo "$query";
Output:
hd 1 kit
Nicht nur ist mein Regex-Muster gleich genau, es ist kürzer und effizienter (erfordert weniger Schritte). Für diese Frage ist die Verwendung von Grenzzeichen überflüssig und beeinträchtigt die Leistung um fast 50%.
Nach dem Löschen der Wortgrenzen aus dem Muster gibt es mehrere Möglichkeiten, die gewünschten Teilstrings zu targeten. Die folgenden Muster haben genau die gleiche Bedeutung haben und steps
Zahl:
/[a-zA-Z0-9]{4,}/
/[a-z0-9]{4,}/i
/[a-z\d]{4,}/i
/[^ ]{4,}/
Mein Punkt ist: Die Leser kommen nicht zu SO auf der Suche von "Meh, es ist gut genug" Antworten, sie kommen hierher, um inspirierende/pädagogische Ansätze aus der riesigen Wissensbasis der talentierten zu ziehen und vielfältige SO-Community. Lassen Sie uns darauf drängen, bei jeder Antwort den bestmöglichen Ansatz zu finden, damit zukünftige Leser von unseren Einsichten lernen und sich über alles, was Programmiersprachen bieten, informieren lassen müssen.
Wenn suboptimale Muster auf SO hochgestuft/markiert werden, gibt es eine verpasste Gelegenheit, den Lesern den richtigen Weg aufzuzeigen, wie sie Codieraufgaben am besten erledigen können.
Danke, funktionierte perfekt und ich hätte gedacht, warum nicht einfach versuchen, mindestens 1 Wort von 4 Zeichen und True/False davon zu suchen. Danke vielmals! –
Sie können es einfacher machen, wenn Sie denken, dass Sie nur * ein * Wort mit * mindestens * vier Zeichen benötigen. –
@CasimiretHippolyte Ich habe es geändert, weil einer von einem guten Mann auf SO gab mir eine Saite wie diese 'Ich bin Sahil'. Dies hat kein Wort von "4" Zeichen, aber es sollte nicht erlaubt sein. –