Tantangan
Diberikan regex yang valid, hasilkan regex yang cocok dengan rangkaian string yang sama, tetapi dibalik.
Tugas
Tantangan ini menggunakan sebagian besar operasi regex dasar: ^
, $
, ?
, +
, *
, []
, {}
, |
. Tidak ada yang namanya kelompok tangkap atau hal rumit lainnya. Karakter khusus dapat lolos.
Contoh Input / Output
Catatan: Input yang tidak valid tidak akan pernah diberikan, dan umumnya ada beberapa kemungkinan jawaban untuk input yang diberikan!
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>
Demo
Demo kerja yang menunjukkan input / output yang benar. Ini memiliki beberapa logika tambahan untuk memvalidasi input yang tidak perlu dalam jawaban nyata. Pertimbangkan input yang tidak valid sebagai perilaku yang tidak terdefinisi.
Spesifik
Untuk kesederhanaan, semua karakter khusus memiliki arti khusus atau melarikan diri; yaitu, [[]
bukan rentang karakter untuk [
. Rentang panjang berasal dari ERE POSIX standar; yaitu, {n}
, {n,}
, dan {n,m}
didukung. Rentang karakter []
dan [^]
didukung. Karena aturan ini, dan karena tidak ada input yang tidak valid diberikan, Anda benar-benar hanya perlu menyalin konten ini langsung ke output. Terakhir, keserakahan tidak masalah, artinya tidak masalah jika regex yang terbalik menemukan kecocokan yang berbeda terlebih dahulu, hanya perlu menemukan kecocokan untuk rangkaian string yang sama.
Mencetak gol
Program terkecil dalam byte (kecuali kecurangan seperti permintaan jaringan) menang. Program dapat menggunakan IO nyata atau hanya mendefinisikan suatu fungsi.
(^a|b)(c$|d)
sebagai test case.
(a)?(b)+
↦ (b)+(a)?
?
()
, yang digunakan dalam contoh Anda.
?
bisa dilampirkan. Coba ketikkan/a(?bc)/
konsol konsol browser.