Как сопоставить слово, где количество символов одинаково - PullRequest
0 голосов
/ 20 декабря 2009

Пожалуйста, помогите с ниже

Мне нужно сопоставить только слова, в которых количество символов одинаково

например такой же подсчет для b c

abc /// соответствует 1 (abc)

aabbcc match 2 (abc)

adabb not mach 2 (ab)

ттт соответствует 0 (abc)

Ответы [ 2 ]

1 голос
/ 20 декабря 2009

Почему вы используете регулярные выражения для этого? Регулярные выражения являются подходящим инструментом для некоторых заданий, но они используются слишком часто, когда обычная обработка старых строк поможет, возможно, с большей ясностью или эффективностью. Вот пример, реализованный на Python:

def matchCount(inputString, lettersToMatch, count) :
    matches = []

    wordsArray = inputString.split()
    for word in wordsArray:
        letterCounts = {}
        for letter in word:
            if letter in letterCounts:
                letterCounts[letter] += 1
            else:
                letterCounts[letter] = 1

        allCorrect = True
        for letter in lettersToMatch:
            if letter !in letterCounts:
                allCorrect = False
            if letterCounts[letter] != count:
                allCorrect = False

            if !allCorrect:
                break

       if allCorrect:
           matches.append(word)
 return matches
0 голосов
/ 20 декабря 2009

Вы должны использовать рекурсивное регулярное выражение.

Ниже приведен код Perl для сопоставления того же номера или 0 s и 1 s

$regex = qr/0(??{$regex})*1/;

Примечание: для получения дополнительной информации, пожалуйста, обратитесь к Рекурсивные регулярные выражения в блоге Петериса Круминса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...