Змагання
З огляду на дійсний регулярний вираз, виведіть регулярний вираз, який відповідає тому ж набору рядків, але перевернутий.
Завдання
Це завдання використовує найосновніші операції регулярних виразів: ^
, $
, ?
, +
, *
, []
, {}
, |
. Немає такого поняття, як групи захоплення або будь-який із цих складних речей. Спеціальних персонажів можна уникнути.
Зразок вводу / виводу
Примітка. Неправильний ввід ніколи не буде надано, і зазвичай існує кілька можливих відповідей на даний ввід!
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>
Демо
Робоча демонстрація, яка демонструє правильні входи / виходи. Це має деяку додаткову логіку для перевірки входів, яка не потрібна в реальній відповіді. Вважайте, що недійсні дані є невизначеною поведінкою.
Особливості
Для простоти, всі спеціальні символи або мають своє особливе значення, або вникають; тобто [[]
не діапазон символів [
. Діапазони довжини походять від стандартних POSIX ERE; тобто {n}
, {n,}
і {n,m}
підтримуються. Діапазони символів []
і [^]
підтримуються. Через ці правила, і оскільки не введено недійсний ввід, вам дійсно потрібно лише скопіювати їх вміст безпосередньо на вихід. Нарешті, жадібність не має значення, тобто не має значення, якщо зворотний регулярний вираз спочатку знайде іншу відповідність, йому просто потрібно знайти збіг для того ж набору рядків.
Оцінка балів
Виграє найменша програма в байтах (обман заборони, таких як мережеві запити). Програма може використовувати реальний IO або просто визначити функцію.
(^a|b)(c$|d)
тестового випадку.
(a)?(b)+
↦ (b)+(a)?
?
()
, який використовується у вашому прикладі.
?
прив’язатись. Спробуйте ввести/a(?bc)/
в консоль браузера.