Wyzwanie
Biorąc pod uwagę poprawną regex, wypisz regex, który pasuje do tego samego zestawu ciągów, ale jest odwrócony.
Zadanie
To wyzwanie wykorzystuje najbardziej podstawowe operacje regex: ^
, $
, ?
, +
, *
, []
, {}
, |
. Nie ma czegoś takiego jak grupy przechwytywania lub jakiekolwiek inne skomplikowane rzeczy. Znaki specjalne można uciec.
Przykładowe wejście / wyjście
Uwaga: Niepoprawne dane wejściowe nigdy nie zostaną podane i dla wielu danych istnieje wiele możliwych odpowiedzi!
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>
Próbny
Działające demo, które pokazuje prawidłowe wejścia / wyjścia. Ma to pewną dodatkową logikę do sprawdzania poprawności danych wejściowych, które nie są konieczne w prawdziwej odpowiedzi. Uważaj niepoprawne dane wejściowe za niezdefiniowane zachowanie.
Specyfika
Dla uproszczenia wszystkie znaki specjalne mają albo specjalne znaczenie, albo uciekają; to [[]
znaczy nie jest zasięgiem postaci [
. Zakresy długości pochodzą ze standardowych POSIX ERE; to znaczy {n}
, {n,}
i {n,m}
są obsługiwane. Zakresy znaków []
i [^]
są obsługiwane. Z powodu tych reguł i ponieważ nie podano niepoprawnych danych wejściowych, naprawdę potrzebujesz tylko ich zawartości bezpośrednio na dane wyjściowe. Wreszcie, zachłanność nie ma znaczenia, tzn. Nie ma znaczenia, czy odwrotna regex znajdzie najpierw inne dopasowanie, musi tylko znaleźć dopasowanie dla tego samego zestawu ciągów.
Punktacja
Najmniejszy program w bajtach (z wyjątkiem oszustw, takich jak żądania sieciowe) wygrywa. Program może użyć rzeczywistego We / Wy lub po prostu zdefiniować funkcję.
(^a|b)(c$|d)
jak przypadek testowy.
(a)?(b)+
↦ (b)+(a)?
?
()
, która jest używana w twoim przykładzie.
?
przyczepić. Spróbuj wpisać/a(?bc)/
w konsoli przeglądarki.