Соревнование
Если задано правильное регулярное выражение, выведите регулярное выражение, которое соответствует тому же набору строк, но в обратном порядке.
Задание
Эта задача использует самые основные операции регулярных выражений: ^
, $
, ?
, +
, *
, []
, {}
, |
. Нет такой вещи как группы захвата или что-то из этого сложного материала. Специальные символы могут быть экранированы.
Пример ввода / вывода
Примечание: неверный ввод никогда не будет дан, и обычно есть несколько возможных ответов для данного ввода!
Input | Sample Output
-----------|-------------
abc | cba
tuv? | v?ut
a(b|c) | (c|b)a
1[23] | [23]1
a([bc]|cd) | (dc|[bc])a
^a[^bc]d$ | ^d[^bc]a$
x[yz]{1,2} | [yz]{1,2}x
p{2} | p{2}
q{7,} | q{7,}
\[c[de] | [de]c\[
ab[c | <output undefined>
a(?bc) | <output undefined>
a[]]bc | <output undefined>
демонстрация
Рабочая демонстрация , демонстрирующая правильные входы / выходы. Это имеет некоторую дополнительную логику для проверки входных данных, которые не нужны в реальном ответе. Считайте неверные входные данные неопределенным поведением.
конкретика
Для простоты все специальные символы либо имеют свое особое значение, либо экранируются; это [[]
не диапазон символов для [
. Диапазоны длин взяты из стандартных PREIX ERE; то есть {n}
, {n,}
и {n,m}
поддерживаются. Диапазоны символов []
и [^]
поддерживаются. Из-за этих правил, и поскольку недопустимые входные данные не заданы, вам действительно нужно только скопировать их содержимое непосредственно в выходные данные. Наконец, жадность не имеет значения, т. Е. Не имеет значения, если обратное регулярное выражение сначала находит другое совпадение, просто нужно найти совпадение для того же набора строк.
счет
Побеждает самая маленькая программа в байтах (за исключением мошенничества, например сетевых запросов). Программа может использовать реальный ввод-вывод или просто определить функцию.
(^a|b)(c$|d)
тестового примера.
(a)?(b)+
Е. (b)+(a)?
?
()
, что используется в вашем примере.
?
привязывать. Попробуйте набрать/a(?bc)/
в консоли браузера.