Domanda

Come puoi abbinare le seguenti parole per PHP, sia con regex / globbing / ...?

Esempi

INNO, heppeh, isi, pekkep, dadad, mum

Il mio tentativo sarebbe di creare una regex composta da 3 parti:

  1. 1a partita [a-zA-Z] *
  2. [a-zA-Z]
  3. rotazione della prima partita // Problema qui!

La parte 3 è il problema, dal momento che non so come ruotare la partita. Questo mi suggerisce che regex non è la soluzione migliore qui, poiché è troppo inefficiente per le parole lunghe.

È stato utile?

Soluzione

Penso che regex sia una cattiva soluzione. Farei qualcosa con la condizione come: ($ word == strrev ($ word)) .

Altri suggerimenti

I regex non sono adatti per trovare palindromi di lunghezza arbitraria.

Tuttavia, se stai cercando di trovare tutti i palindromi in un ampio set di testo, potresti usare regex per trovare un elenco di cose che potrebbero essere palindromi, quindi filtrare tale elenco in trova le parole che in realtà sono palindromi.

Ad esempio, puoi usare una regex per trovare tutte le parole in modo tale che i primi X caratteri siano il contrario degli ultimi X caratteri (da un piccolo valore fisso di X, come 2 o 3) , quindi esegui un filtro secondario su tutte le corrispondenze per vedere se l'intera parola è in realtà un palindromo.

In PHP una volta ottenuta la stringa che vuoi controllare (per regex o split o qualunque altra cosa) puoi semplicemente:

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

Penso che questo regexp possa funzionare

  $re = '~([a-z])(.?|(?R))\1~';
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top