2

この質問への回答として次の正規表現を提供することを考えていましたが、探していた正規表現を書くことができないようです:

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

これは単語の順序付けられた略語と一致する必要wordpressがありますが、まったく一致しないこともあります。

上記の正規表現を変更して、少なくとも 4 文字を順番に一致させるにはどうすればよいですか? お気に入り:

  • wrdp
  • 押す
  • ワードプ
  • プレス
  • ワードプレス

これを行うための最良の方法は何ですか... =)

4

4 に答える 4

6

先読みアサーションを使用できます。

^(?=.{4})w?o?r?d?p?r?e?s?s?$
于 2010-01-21T15:10:00.123 に答える
2
if ( strlen($string) >= 4 && preg_match('#^w?o?r?d?p?r?e?s?s?$#', $string) ) {
    // abbreviation ok
}

文字列が少なくとも4文字の長さでない限り、これは正規表現を実行しません。

于 2010-01-21T15:20:26.090 に答える
2

PHPの類似性チェッカー関数はどうですか?

于 2010-01-21T15:05:33.280 に答える
0

私はこれが正規表現ではないことを知っています、ただの楽しみです...

#!/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")
于 2010-01-21T15:31:07.017 に答える