正则表达式 - 匹配单词的缩写

时间:2010-01-21 15:00:39

标签: php regex abbreviation

我在考虑提供以下正则表达式作为this question的答案,但我似乎无法编写我正在寻找的正则表达式:

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

这应该匹配单词wordpress的有序缩写,但它也可以匹配任何内容。

如何修改上述正则表达式以便按顺序匹配至少4个字符?像:

  • wrdp
  • wordp
  • wpress
  • 的wordpress

我想知道最好的方法是什么... =)

4 个答案:

答案 0 :(得分:5)

你可以使用先行断言:

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

答案 1 :(得分:2)

php相似性检查功能怎么样?

答案 2 :(得分:2)

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

除非字符串长度至少为4个字符,否则甚至不会运行正则表达式。

答案 3 :(得分: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")