Regex - Bir Word Matching Kısaltmalar

4 Cevap php

I this question bir cevap olarak aşağıdaki regex sağlayan düşünüyordum, ama ben aradığım düzenli ifade yazmak için görünmüyor olabilir:

w?o?r?d?p?r?e?s?s?

Bu kelimenin kelimebasın bir sipariş kısaltma eşleşmesi gerekir, ama aynı zamanda hiçbir şey eşleşebilir.

Nasıl match at least 4 chars in order bunun için sırayla yukarıdaki regex değiştirebilir? Gibi:

  • kelime
  • wrdp
  • basın
  • kelimep
  • wbasın
  • kelimebasın

Bunu yapmak için en iyi yolu nedir bilmek isterim ... =)

4 Cevap

Bir lookahead iddiayı kullanabilirsiniz:

^(?=.{4})w?o?r?d?p?r?e?s?s?$

Ne php benzerlik denetleyicisi işlevleri hakkında?

if ( strlen($string) >= 4 && preg_match('#^w?o?r?d?p?r?e?s?s?$#', $string) ) {
    // abbreviation ok
}

Dize en az 4 karakter olduğu sürece bu bile regexpi çalışmaz.

Ben bu sadece eğlence için, bir regex değil biliyorum ...

#!/usr/bin/python

FULLWORD = "wordprocess"

def check_word(word):
    i, j = 0, 0
    while i < len(word) and j < len(FULLWORD):
        if word[i] == FULLWORD[j]:
            i += 1; j += 1
        else:
            j += 1

    if j >= len(FULLWORD) or i < 4 or i >= len(FULLWORD):
        return "%s: FAIL" % word
    return "%s: SUCC" % word

print check_word("wd")
print check_word("wdps")
print check_word("wsdp")
print check_word("wordprocessr")