Pergunta

Como você pode combinar as seguintes palavras por PHP, quer por regex / englobamento /...?

Exemplos

INNO, heppeh, isi, pekkep, dadad, mum

Minha tentativa seria fazer um regex que tem 3 partes:

  1. 1º jogo jogo [a-zA-Z] *
  2. [a-zA-Z]?
  3. rotação da 1ª partida // Problema aqui!

A parte 3 é o problema, já que eu não sei como rodar o jogo. Isso me sugere que regex não é a melhor solução aqui, uma vez que é também muito ineficiente para palavras longas.

Foi útil?

Solução

Eu acho que regex são uma má solução. Eu faria algo com a condição como:. ($word == strrev($word))

Outras dicas

regexs não são adequados para encontrar palíndromos de um comprimento arbitrário.

No entanto, se você está tentando encontrar todos os palíndromos em um grande conjunto de texto, você pode uso regex para encontrar uma lista de coisas que podem ser palíndromos, e depois filtrar essa lista para encontrar as palavras que realmente são palíndromos.

Por exemplo, você pode usar um regex para encontrar todas as palavras de tal forma que os primeiros caracteres X são o reverso dos personagens última X (de algum pequeno valor fixo de X, como 2 ou 3) e, em seguida, executar um filtro secundário contra todas as partidas para ver se a palavra inteira é de fato um palíndromo.

No PHP uma vez que você obter a seqüência que deseja verificar (por regex ou cisão ou qualquer outra coisa) você pode apenas:

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

eu acho que essa expressão regular podem trabalhar

  $re = '~([a-z])(.?|(?R))\1~';
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top