Прежде чем я начну - возможно, стоит заявить, что: это технически не нужно решать с помощью регулярных выражений, просто я сразу подумал о регулярном выражении, когда начал решать эту проблему, иМне интересно узнать, возможно ли решить с помощью Regex.
Последние пару часов я пытался создать Regex, который выполняет следующие действия.
Регулярное выражение должно соответствовать строке длиной десять символов, если первые пять символов и последние пять символов идентичны, но каждый отдельный символ противоположен в случае.
Другими словами, если вы берете первые пять символов, инвертируйте регистр каждого отдельного символа, который должен соответствовать последним пяти символам строки.
Например,регулярное выражение должно соответствовать abCDeABcdE
, так как первые пять символов и последние пять символов одинаковы, но каждый соответствующий символ противоположен в случае.Другими словами, flip_case("abCDe") == "ABcdE"
Вот еще несколько строк, которые должны соответствовать: abcdeABCDE
, abcdEABCDe
, zYxWvZyXwV
.
И вотнесколько, которые не должны совпадать:
abcdeABCDZ
, хотя дело обстоит иначе, сами строки не совпадают. abcdeABCDe
, очень близкое совпадение,но не должны совпадать, так как e
не являются противоположными в случае.
Вот первое из приведенных мной регулярных выражений, которое, очевидно, неверно, поскольку не учитывает процесс смены регистра.
/([a-zA-Z]{5})\1/g
Мое следующее замечание: возможно ли следующее в регулярном выражении,но я читал несколько учебных пособий по Regex и, похоже, нигде не могу его найти.
/([A-Z])[\1+32]/g
Этот новый regex (который, очевидно, не работает) должен соответствовать одной заглавной букве, сразусопровождаемый собой-плюс-32-ascii, то есть, другими словами, он должен совпадать с заглавной буквой, за которой сразу следует его нижний регистр.Но, насколько я понимаю, вы не можете «добавить значение ascii» в обратную ссылку в регулярном выражении.
И бонусные баллы для тех, кто может ответить на этот вопрос - в данном конкретном случае, как известно, длина рассматриваемой строки составляет 10 символов.Можно ли создать регулярное выражение, которое соответствует строкам произвольной длины?