Регулярное выражение в Python, 2-3 цифры, затем 2 буквы - PullRequest
2 голосов
/ 21 апреля 2020

Я пытаюсь сделать автоопределение размера бюстгальтера в списке одежды. Хотя мне удалось извлечь только элементы бюстгальтера, сейчас я смотрю на извлечение информации о размере и думаю, что я почти на месте (благодаря сообществу stackoverflow). Тем не менее, есть конкретный случай, который я не смог найти в другом сообщении.

Я использую: regexp = re.compile(r' \d{2,3} ?[a-fA-F]([^bce-zBCE-Z]|$)')
Итак
Возможный пробел, если не в начале описания
два или три числа
Другой возможный пробел или нет
Любые буквы (строчные или прописные) между A и F
, а затем еще одна буква для двух особых случаев AA и FF или конец строки.

Мой вопрос заключается в том, есть ли способ, чтобы вторая буква соответствовала первой букве (AA или FF), потому что в моем случае мой код выводит мне некоторый размер BA и CA, которые не существуют

Примеры:
Не работает:
"bh sexig top matchande h & m genomskinligt parti svart detaljer 42 basi c обычный" return "42 ba" вместо не найден
"puma, sport -bh, strl: 34cd, svart / grå ", я думаю, что клиент имел в виду c / d

Работает нормально:
" секрет Виктории, bh, strl: 32 c, gul / vit "возвращает "32 c"
"розовые виктории секрет bh 75dd бордовый" возвращается " 75 дд "

Спасибо!

1 Ответ

1 голос
/ 21 апреля 2020

Вы можете использовать

 \d{2,3} ?([a-fA-F])\1?(?![a-fA-F])

Пояснение

  • \d{2,3} ? Соответствует пробелу, 2-3 цифры и дополнительный пробел
  • ([a-fA-F])\1? Захват a-fA-F в группе 1 с последующей необязательной обратной ссылкой на группу 1
  • (?![a-fA-F]) Отрицательный взгляд вперед, утверждают, что то, что справа, не является a-fA-F

Regex demo

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