Frage

Wie kann man die folgenden Worte von PHP entsprechen, entweder durch regex / Globbing /...?

Beispiele

INNO, heppeh, isi, pekkep, dadad, mum

Mein Versuch wäre eine Regex zu machen, die 3 Teile haben:

  1. 1. Match Spiel [a-zA-Z] *
  2. [a-zA-Z]?
  3. Drehung des ersten Match // Problem hier!

Der Teil 3 ist das Problem, da ich nicht weiß, wie das Spiel zu drehen. Dies legt nahe, dass ich regex hier nicht die beste Lösung ist, da es zu sehr ineffizient für lange Worte ist.

War es hilfreich?

Lösung

Ich denke, regex eine schlechte Lösung. Ich würde etwas mit der Bedingung tun:. ($word == strrev($word))

Andere Tipps

regexs ist nicht geeignet für Palindrome von beliebiger Länge zu finden.

Wenn Sie jedoch alle der Palindrome in einer großen Menge von Text versuchen zu finden, Sie könnte Verwendung regex eine Liste der Dinge zu finden, die Palindrome sein könnte, und dann filtert diese Liste finden die Worte, die eigentlich sind Palindrome.

Zum Beispiel, Sie können einen regulären Ausdruck verwenden, um alle Wörter zu finden, so dass die ersten X Zeichen sind die Rückseite der letzten X-Zeichen (von einigen kleinen festen Wert von X, wie 2 oder 3) und dann einen zweiten Filter gegen alle Spiele laufen, um zu sehen, ob das ganze Wort in der Tat ein Palindrom ist.

In PHP, wenn Sie die Zeichenfolge, die Sie wollen, erhalten überprüfen (durch regex oder Split oder was auch immer) kann man nur:

if ($string == strrev($string)) // it's a palindrome!

Ich denke, das regexp kann funktionieren

  $re = '~([a-z])(.?|(?R))\1~';
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top