Я пытаюсь проверить, действительно ли уровень или нет. Уровень имеет вид: (но они больше из них 998)2 цифры разрешены только один раз (Regex)
bbbbbbb
b41111b
b81400b
b81010b
b01121b
b08001b
bbbbbbb
Уровень должен следовать нескольким правилам. Я написал регулярное выражение для соответствия всем правилам, кроме одного: Уровень должен содержать ровно 1 раз 2 и 1 раз 4. (Обратите внимание, что на уровне выше есть два 4 и один 2. Недопустимый уровень выше.)
Это школьный проект, поэтому, пожалуйста, направьте меня на ответ. Спасибо заранее.
EDIT:
Мой текущий регулярное выражение:
^b{' + str(length) + r'}\n(b{1}[0-8]{' + str(length - 2) + r'}b{1}\n)+b{' + str(length) + '}$
Для приведенного выше уровня, длина = 7 Обратите внимание, что он даже не пытается фильтровать этот неправильный уровень выше. Другие правила:
- Уровень должен быть окружен «Ъ»
- Уровень может содержать только символ «B» и число меньше 9.
- Там может быть только один 2
- Там может быть только один 4
Моя регулярное выражение выше действительно принимает правила 1 и 2 во внимание, но мне еще нужно выяснить правила 3 и 4.
Я пробовал искать и так, не мог понять.
'bbbbbbbbbbbbbbb b0000000000000b b0233333303400b b0111111111110b b0000000000000b bbbbbbbbbbbbbbb' действительный уровень, но ваше регулярное выражение не захватить его. – Auberon
Неправильно. Мое регулярное выражение захватывает всех из них, см. ** live demo: http://www.rubular.com/r/1cOFdbuP5k** – anubhava
Я должен был упомянуть. Я работаю на Python, это имеет значение? – Auberon