PHP'nin regex Rotasyon

4 Cevap php

Nasıl ya regex tarafından, PHP tarafından şu sözlerle maç / globbing / ...?

Örnekler

INNO, heppeh, isi, pekkep, dadad, mum

Benim girişimi 3 bölümden bir regex yapmak olacaktır:

  1. 1 maç maçı [a-Za-z] *
  2. [A-Za-z]?
  3. 1 maç / / Problem dönme burada!

The part 3 is the problem, since I do not know how to rotate the match. This suggests me that regex is not the best solution here, since it is too very inefficient for long words.

4 Cevap

Ben regex kötü bir çözüm olduğunu düşünüyorum. ($word == strrev($word)): Ben gibi koşulu ile bir şeyler yapmak istiyorum.

Regexs keyfi bir uzunlukta palindrom bulmak için uygun değildir.

Ancak, metnin büyük bir set içinde palindrom tüm bulmak için çalışıyorsanız, size could palindrom olabilir şeylerin bir listesini bulmak için regex kullanın ve sonra kelimeleri bulmak için bu listeyi filtrelemeleri aslında palindrom vardır.

Örneğin, can çalıştırın ilk X karakterleri (2 ya da 3 gibi X bazı küçük sabit değeri,) son X karakter ters olan tüm kelimeleri bulmak için böyle bir regex kullanın ve tüm sözcük aslında bir palindrom ise tüm maçlarda karşı ikincil bir filtre görmek için.

Eğer dize bir kez PHP size sadece can (regex veya bölünmüş ya da her neyse) tarafından kontrol etmek istiyorum:

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

ben bu sıradanifade çalışabilirsiniz düşünüyorum

  $re = '~([a-z])(.?|(?R))\1~';