Macam-Macam Meta Regex Golf


42

Perhatikan: Mengikuti permintaan populer, saya sedikit mengendurkan aturan:

  • Ukuran regex maksimum tumbuh sebesar 1 byte setiap 5 jawaban . Jawaban N dapat menggunakan hingga 29 + ⌈N / 5⌉ byte.
  • Nilai setiap jawaban adalah (M / (30 + N / 5)) N

Di golf regex, Anda diberikan dua set string, dan diminta untuk membuat regex terpendek yang cocok dengan semua string di set pertama, tetapi gagal pada semua string di set kedua.

Itulah yang akan kita lakukan, tetapi setiap kali seseorang menjawab, regex mereka sendiri akan ditambahkan ke salah satu dari dua rangkaian string (pilihan mereka sendiri). Karena itu, ada perintah ketat untuk menjawab dalam tantangan ini.

Mari kita lihat sebuah contoh:

  • Katakan saya memulai ini dengan abc(yang tidak akan saya lakukan), dan memasukkannya ke dalam set pertandingan .
  • Maka jawaban kedua yang valid adalah a, karena cocok dengan yang di atas (dan tidak ada string yang perlu gagal). Katakan jawaban ini sesuai dengan set gagal .
  • Sekarang jawaban ketiga harus cocok abctetapi gagal a. Karena itu jawaban ketiga yang mungkin b. Mari kita letakkan ini di set pertandingan .
  • Jawaban keempat sekarang harus cocok abcdan b, tetapi gagal a. Kami akan melarang jawaban duplikat, jadi regex yang valid akan menjadi c|b.

Yang penting adalah bahwa jawaban Anda harus sesingkat mungkin. Ini mungkin sepele untuk beberapa jawaban pertama, tetapi begitu kita mendapatkan beberapa jawaban, itu akan menjadi semakin sulit untuk mendapatkan kecocokan yang diinginkan dalam karakter sesedikit mungkin.

Untuk tantangan sebenarnya, awalnya kumpulan pertandingan berisi PPCGdan kumpulan gagal berisi [PPCG], dan saya telah memberikan jawaban pertama.

Menjawab

Hal utama yang perlu dipahami tentang tantangan ini adalah bahwa hanya satu orang yang dapat menjawab pada satu waktu dan setiap jawaban tergantung pada yang sebelumnya .

Seharusnya tidak ada dua jawaban dengan hal yang sama N. Jika dua orang kebetulan menjawab beberapa orang secara bersamaan N, orang yang menjawab kemudian (walaupun perbedaannya hanya beberapa detik) harus dengan ramah menghapus jawaban mereka.

Agar ini berjalan sedikit lebih lancar, cobalah untuk tetap pada langkah-langkah berikut saat memposting jawaban Anda:

  • Pastikan seseorang telah memverifikasi secara independen kebenaran jawaban sebelumnya (dan meninggalkan komentar yang sesuai).
  • Ambil dua set tes yang ditemukan di jawaban sebelumnya, dan tulis regex yang cocok dengan semua string dalam satu set dan tidak ada yang lain.
  • Posting jawaban Anda dalam format berikut:

    # N. [regex flavour] - [regex size in bytes]
    
        [regex]
    
    [link to online regex tester]
    
    [notes, explanation, observations, whatever]
    
    ### The next answer has to match the following strings:
    
        [match set]
    
    ### And fail on these strings:
    
        [fail set]
    

    di mana Nnomor jawaban Anda. Silakan salin [match set]dan [fail set]dari jawaban sebelumnya, dan tambahkan regex Anda ke salah satu dari mereka.

    Ini sangat penting untuk tantangan! Saya telah menyediakan alat dasbor untuk tantangan untuk membantu pembukuan, dan itu bergantung pada templat di atas. (Lihat bagian bawah pos.)

  • Pengguna lain sekarang harus meninjau kiriman Anda dan meninggalkan komentar "Kebenaran diverifikasi" jika jawaban Anda mengikuti semua aturan (lihat di bawah). Jika tidak, mereka harus meninggalkan komentar yang menunjukkan kekurangan. Anda punya waktu 15 menit untuk memperbaiki masalah itu. Jika tidak, jawaban Anda akan dianggap tidak valid, harus dihapus, dan orang lain dapat memposting jawaban tindak lanjut ke yang sebelumnya. (Jika ini terjadi, Anda bebas mengirimkan jawaban baru kapan saja.)

Peraturan ini mungkin tampak agak ketat, tetapi mereka perlu untuk menghindari jawaban yang tidak valid di suatu tempat di rantai.

Aturan

  • Seorang pengguna hanya dapat mengirimkan satu jawaban per periode 4 jam. (Ini untuk mencegah pengguna terus menonton pertanyaan dan menjawab sebanyak mungkin.)
  • Seorang pengguna tidak boleh mengirimkan dua jawaban berturut-turut. (mis. sejak saya mengirimkan jawaban 1, saya tidak bisa menjawab 2, tetapi saya bisa melakukannya 3.)
  • Jangan edit jawaban yang telah diverifikasi. (Bahkan jika Anda menemukan cara untuk mempersingkatnya!)
  • Jika kesalahan ditemukan sebelumnya dalam rantai (yaitu setelah jawaban tindak lanjut telah diposting), jawaban yang menyinggung harus dihapus dan akan dihapus dari serangkaian string dimana kiriman baru gagal. Namun , semua jawaban yang telah diposting sejak seharusnya tidak diubah untuk mencerminkan.
  • Nyatakan dengan jelas satu rasa yang digunakan regex Anda. Anda dapat memilih rasa apa saja yang dapat diuji secara online secara gratis. Ada daftar penguji online yang bagus di StackOverflow . Secara khusus, Regex101 dan RegexPlanet harus bermanfaat, karena mendukung berbagai macam rasa. Harap sertakan tautan ke penguji yang Anda pilih dalam jawaban Anda. Dengan mengaktifkan pengubah global dan multiline di tester, Anda dapat menguji semua string sekaligus, satu di setiap baris (pengubah ini tidak dihitung terhadap ukuran regex Anda, karena mereka tidak diperlukan pada string individu).
  • Regex Anda tidak boleh kosong.
  • Regex Anda untuk jawaban N tidak boleh lebih dari 29 + ⌈N / 5⌉ byte. Yaitu jawaban 1 hingga 5 dapat menggunakan hingga 30 byte (inklusif), jawaban 6 hingga 10 dapat menggunakan hingga 31 byte ... jawaban 31 hingga 35 dapat menggunakan hingga 36 byte. Periksa dasbor untuk melihat berapa banyak karakter yang dapat digunakan jawaban berikutnya.
  • Regex Anda tidak boleh identik dengan string apa pun di set tes mana pun.
  • Jangan menyertakan pembatas dalam kiriman atau jumlah byte Anda, bahkan jika bahasa host yang relevan menggunakannya. Jika regex Anda menggunakan pengubah, tambahkan satu byte per pengubah ke ukuran regex. Misalnya /foo/iakan 4 byte.

Mencetak gol

Skor masing-masing jawaban dihitung sebagai (M / (30 + N / 5)) N , di mana M adalah ukuran regex dalam byte, dan N adalah jumlahnya. Skor setiap pengguna adalah produk dari semua jawaban mereka. Pengguna dengan skor keseluruhan terendah menang. Jika terjadi seri, pengguna dengan kiriman terbaru menang. Saya akan menerima jawaban terakhir pengguna itu.

Jika Anda lebih suka menjumlahkan skor, Anda dapat menghitung skor setiap jawaban sebagai N * (log (M) - log (30)) dan jumlahkan semua jawaban. Itu akan memberikan urutan leaderboard yang sama.

Tidak perlu untuk memasukkan skor jawaban di jawabannya, hanya melaporkan M . Dasbor tantangan di bagian bawah pertanyaan akan menghitung skor, dan jika ada dua skor yang sangat dekat, saya akan mengecek hasilnya menggunakan tipe presisi arbitrer.

Perhatikan bahwa skor setiap jawaban kurang dari 1, sehingga Anda dapat meningkatkan skor keseluruhan dengan memberikan jawaban baru. Namun, semakin pendek setiap kiriman Anda, semakin efisien Anda dapat menurunkan skor Anda. Selanjutnya, jawaban selanjutnya dapat mencapai skor yang lebih rendah meskipun lebih lama, karena eksponen yang meningkat.

Dasbor

Saya telah menulis alat Dashboard kecil, menggunakan Stack Snippets, berdasarkan pekerjaan Optimizer di sini . Saya harap ini akan membantu kita mengatur tantangan yang bergantung pada jawaban ini.

Ini akan menampilkan status tantangan saat ini - khususnya, jika ada jawaban yang bertentangan, jika jawaban perlu diverifikasi, atau jika jawaban berikutnya dapat diposting.

Ini juga menghasilkan daftar semua jawaban dengan skor, serta papan peringkat semua pengguna. Harap tetap menggunakan format tantangan di atas, sehingga dasbor dapat membaca string yang relevan dari jawaban Anda. Kalau tidak, Anda mungkin tidak termasuk dalam leaderboard.

Harap beri tahu saya ( idealnya dalam obrolan ) jika Anda menemukan bug atau memiliki ide bagaimana kegunaan alat ini dapat ditingkatkan.


Aturannya ternyata sedikit lebih ketat dari yang saya maksudkan. Setelah beberapa diskusi dalam obrolan saya mempertimbangkan untuk melonggarkan aturan sedikit setelah karunia habis. Saya akan memposting 3 komentar untuk opsi yang dapat saya pikirkan di bawah ini. Harap tunjukkan preferensi Anda dengan memberikan suara pada komentar.
Martin Ender

2
Aturan adalah aturan. Jangan mengubahnya. Mungkin memalukan bahwa hampir tidak mungkin untuk mengirim jawaban lain, tetapi itu tidak membenarkan mengubah aturan.
Martin Ender

2
Izinkan byte tambahan setiap 10 jawaban. Sejalan dengan itu, mengubah skor jawaban (M / (30 + N / 10)) ^ N . Ini akan diterapkan secara surut, sehingga jawaban berikutnya dapat menggunakan hingga 32 byte. Perubahan dalam penilaian tidak akan memengaruhi dua tempat teratas di papan peringkat, tetapi pengguna lain akan agak terseok-seok.
Martin Ender

8
Izinkan byte tambahan setiap 5 jawaban. Sejalan dengan itu, mengubah skor jawaban (M / (30 + N / 5)) ^ N . Ini akan diterapkan surut, sehingga jawaban berikutnya bisa menggunakan hingga 35 byte. Perubahan dalam penilaian tidak akan memengaruhi dua tempat teratas di papan peringkat, tetapi pengguna lain akan agak terseok-seok.
Martin Ender

4
Anda orang aneh dan bengkok. Mengapa Anda melakukan ini pada diri Anda sendiri? (Sangat menyenangkan untuk membaca: P)
Joe

Jawaban:


5

42. Rasa python - 38

\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Diuji pada Regex101

Kurangnya entropi dalam beberapa jawaban terakhir membuat saya ... (seharusnya melakukan ini lebih cepat)

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]
[]^C]\w$|\w.\)|-\$|w[+^]|\?[^w$]*\$$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$
\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Kebenaran diverifikasi.
Martin Ender

Program saya berjuang untuk menemukan jawaban yang panjangnya kurang dari 45 karakter ...
Vi.

@ Vi. Yah saya bisa mengatakan bahwa solusi 38 setidaknya ada, tetapi tentu saja akan menarik jika seseorang berhasil mendapatkan lebih rendah :)
Sp3000

11

28. Rasa python - 29

\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Diuji pada Regex101

Banyak bermain-main dilakukan - # 4 di set pass mungkin rasa sakit terbesar, karena itu adalah substring dari regex di set gagal, dan juga berbagi akhiran dengan regex lain di set gagal.

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Kebenaran diverifikasi.
Martin Ender

9

24 - Rasa python - 29

^(..[^^].{4,22}\$|[^?]+\w)$|2

Diuji di sini

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2

1
Kebenaran diverifikasi.
feersum

8

10. Rasa python - 19

^[\w^]*$|!|]P|G]\$$

Diuji pada Regex101 .

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Kebenaran diverifikasi.
FryAmTheEggman

8

8. ECMAScript rasa - 14 byte

[^?][PG]$|<|PG

Demo

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG

Kebenaran diverifikasi.
FryAmTheEggman

Memperbaiki tautan demo.
Martin Ender

@FryAmTheEggman Script membaca komentar, tetapi hanya mencari "kebenaran diverifikasi" sebagai sub string (mengabaikan kasus).
Martin Ender

@ MartinBüttner Terima kasih, senang tahu.
FryAmTheEggman

3
+1 untuk sendirian membuat tantangan ini 10 kali lebih sulit
Sp3000


7

9. Rasa python - 28

^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Diuji pada Regex101

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Saya juga menemukan ini tidak berfungsi satu menit yang lalu. Ini membutuhkan dua garis miring terbalik untuk mencocokkan, jadi saya tidak berpikir bendera dapat menyimpannya.
feersum

Whoops .... Seharusnya a * bukannya +. Saya mengedit jawaban saya
ndc5057

Kebenaran diverifikasi.
FryAmTheEggman

7

23. PCRE rasa - 28

([^\\}<]{3}|][^]]|^).?[$PG]$

Diuji pada Regex101.

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$

Apa yang [^]harus dilakukan
feersum

@feersum Dalam kebanyakan rasa, a ]sebagai elemen pertama dari kelas karakter (setelah negasi opsional), hanya ]di dalam kelas karakter dan tidak menutup (karena kelas karakter kosong sedikit tidak ada gunanya). Jadi [^]]cocok dengan apa pun kecuali ]. Pengecualian penting adalah ECMAScript, yang memungkinkan kelas karakter kosong. Dalam hal []itu tidak cocok dengan apa pun, itu bertindak seperti (?!)dan [^]cocok dengan karakter apa pun, yang nyaman, karena ECMAScript tidak memiliki spengubah, dan sulit [\s\S]untuk mengetik membaca.
Martin Ender

Kebenaran diverifikasi.
Martin Ender

7

11. Python - 29

^(.{,4}|.{9}|.{16,19}|.{5}P)$

► Tes di RegexPlanet

Hampir semua jawaban tidak valid memiliki panjang yang berbeda dari semua jawaban yang valid. Regex ini memanfaatkan itu.

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Kebenaran diverifikasi.
feersum

7

29. PCRE flavor - 28

^..(.[!)3G^w]|$)|\^.{7}$|G\)

Diuji pada Regex101

Jawaban ini masih berfungsi ...

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Kebenaran diverifikasi.
Martin Ender

1
Bagus! Kecuali perombakan, itulah yang saya miliki
Sp3000

Saya mencoba menghitung ini menggunakan algoritma genetika, tetapi hanya menghasilkan 30 karakter regex ... Sekarang jalankan untuk mendapatkan jawaban berikutnya. Hasil saat ini - 32 karakter.
Vi.

@ Vi Algoritme genetik, ide-ide menarik yang Anda miliki di sana: P
Sp3000

@ Sp3000, Sekarang 30 karakter ... Tapi server lain telah tiba, jadi perlu memulai ulang.
Vi.

6

31. Citarasa Perl - 29

[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Saya tidak tahu cara kerjanya, itu diproduksi oleh perampokan pertama saya ke dalam algoritma genetika . Ada output program yang menyebutkan jawabannya.

Jawaban selanjutnya harus sesuai:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

dan gagal:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Kebenaran diverifikasi.
Martin Ender

Ahaha bagus - apakah Anda menggunakan jawaban sebelumnya sebagai benih untuk populasi atau apakah hanya berakhir seperti yang sebelumnya?
Sp3000

String lewat dan gagal digunakan sebagai blok bangunan awal. Mereka kemudian dilarang setelah beberapa waktu karena minimum lokal. Anda dapat melihat hasilnya di log program: angka dalam tanda kurung setelah "metric =" adalah ukuran seberapa cepat kita melangkah maju. Itu rendah untuk waktu yang lama, kami melarang jawaban saat ini dan mengatur ulang.
Vi.

(Sementara itu, kandidat 31 karakter untuk jawaban berikutnya sudah ditemukan)
Vi.

Oh, batasnya bertambah? Bukan 29? Dengan cara ini tidak akan berakhir segera ... Saya pikir tantangan utamanya adalah menemukan yang terakhir, regex utama.
Vi.

6

32. PCRE - 30 byte

^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

Diuji pada Regex101

Jawaban berikutnya harus cocok dengan string berikut :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Dan gagal pada string ini :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

1
Kebenaran diverifikasi.
Martin Ender

Mengapa ditambahkan ke daftar "gagal"? Sudah gagal dengan sendirinya, sehingga dapat berfungsi sebagai jawaban berikutnya tanpa modifikasi. Saya kira untuk setiap jawaban tidak ada pilihan untuk daftar mana yang akan ditambahkan.
Vi.

3
@ Vi. Saya rasa hwnd merasa baik hari ini
Sp3000

Saya akan membuatnya lebih sulit karena terus berjalan.
hwnd

5

1. ECMAScript flavour - 2 byte

^P

Uji di Regex101.

Set pencocokan awal adalah PPCGdan set gagal [PPCG]. Oleh karena itu, regex ini hanya menguji bahwa string dimulai dengan P.

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P

Dan gagal pada string ini:

[PPCG]

3
Kebenaran diverifikasi.
Beta Decay

5

3. ECMAScript flavour - 6 byte

[^\]]$

Uji di sini

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$

1
Kebenaran diverifikasi.
Beta Decay

5

7. Rasa python - 16

(?<!\\..)(?!]).$

Diuji pada Regex101

Harus menambahkan \ ke daftar pertandingan :)

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Kebenaran diverifikasi.
NinjaBearMonkey

Ini ... ini licik.
wchargin

@WChargin Terima kasih :) Anda harus memeriksa beberapa jawaban user23013 atau n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳; beberapa cukup 'licik';)
FryAmTheEggman

5

12. ECMAScript rasa - 17

!|[^?]P(CG|G..)?$

Uji di sini .

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Kebenaran diverifikasi.
Martin Ender

5

22. PCRE Flavour - 29 byte

Karena # 22 asli tidak dimodifikasi selama 1 jam saya menganggap itu menjadi tidak valid.

^.{3,23}[.-~]..\$$|[^P?][PG]$

Demo

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P

1
Kebenaran diverifikasi. (Dan ya, itu benar, 22 sebelumnya sekarang tidak valid.)
Martin Ender

5

26. Rasa python - 28

^..(.[!G)(3w^]|.{7}$|$)|\$\?

Tes pada Regex101

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

Kebenaran diverifikasi.
Martin Ender

5

30. Rasa python - 28

[[?C(].[-!)|w]|^P|^[^C|\\]*$

Diuji pada Regex101

Saat ada surat wasiat ...

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$

Kebenaran diverifikasi.
jimmy23013

5

37. Citarasa Perl - 30

\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Pengajuan pada Regex101 .

Solusinya dihasilkan oleh program yang sama seperti sebelumnya. Program ini juga telah mencetak solusi 29-karakter \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, saya tidak tahu mengapa, karena kelihatannya seperti regex rusak ...

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Kebenaran diverifikasi.
Martin Ender

Ahaha saya sangat kesal saya tidak mendapatkan ini setelah datang sejauh ini dengan babak pertama: P
Sp3000

5

40. PCRE - 33 byte

[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Diuji pada Regex101

Jawaban berikutnya harus cocok dengan string berikut :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]

Dan gagal pada string ini :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Kebenaran diverifikasi.
Vi.

1
Saya memiliki 35 tetapi saya tidak puas dengan itu jadi saya akan melihat apakah saya bisa mendapatkan sesuatu yang lebih menarik
Sp3000

Dan saya punya 3 pilihan untuk jawaban 32 karakter, tetapi seluruh tantangan menjadi sedikit membosankan (terutama pembukuan pengajuan Regex101 dan daftar string gagal / lulus). Jika seseorang mau, saya dapat memposting jawaban.
Vi.

4

4. ECMAScript flavour - 5 byte

^\^?P

Uji di sini .

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P

1
Kebenaran diverifikasi.
Beta Decay

4

5. ECMAScript flavour - 6 byte

^[P^]P

Diuji pada Regex101 .

Waktu untuk sedikit membumbui dengan set keberhasilan.

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Kebenaran diverifikasi.
FryAmTheEggman

4

6. ECMAScript flavour - 9 byte

[^?][PG]$

Diuji pada Regex101 .

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P

1
Kebenaran diverifikasi.
FireFly

4

14. Rasa PCRE - 25

([.$?]|G\])\$$|^\^?P|\]P$

Diuji pada Regex101

Ini mulai menjadi sangat sulit.

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Kebenaran diverifikasi.
Martin Ender

4

15. Rasa PCRE - 26

([P.$?]\$|[]^]P|G\]\$|CG)$

Diuji pada Regex101

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

1
Kebenaran diverifikasi.
FireFly

4

16. Rasa PCRE - 21

^[^?]*[PG]$|[?$].*\$$

Diuji pada Regex 101 .

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$

Itu tidak cocok PPCG.
jimmy23013

@ user23013 diperbaiki
es1024

Kebenaran diverifikasi.
jimmy23013

4

25. PCRE rasa - 29

^(..[^^].{4,22}\$|[^?]+\w)$|~

Diuji di sini. (Regex pengujian berisi tambahan \nuntuk memastikan bahwa tidak ada kecocokan yang mencakup beberapa baris. Ini tidak perlu untuk mencocokkan setiap string individual.)

Itu adalah buah yang menggantung rendah! :) Saya harus mengucapkan selamat kepada plannapus, regex ini luar biasa elegan untuk set tes saat ini. Jika Anda ingin memperbaiki jawaban ini, pastikan untuk membatalkan jawaban sebelumnya juga!

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

1
Kebenaran diverifikasi.
feersum

4

35. PCRE - 35 byte

^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Diuji pada Regex101

Jawaban berikutnya harus cocok dengan string berikut :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Dan gagal pada string ini :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Verifikasi saya tidak menunjukkan kesalahan.
Vi.

Kebenaran diverifikasi. (@Vi., Dasbor mencari frasa khusus ini.)
Martin Ender

Saya berpikir tentang menggunakan kalimat itu, tetapi tidak yakin apakah saya ingin membuat komentar saya otoritatif.
Vi.

Jawaban 34 karakter saya yang lain yang disebutkan sebelumnya tampaknya bekerja di sini. Menunggu 4 jam (atau seperti itu) ...
Vi.

Saya tidak repot-repot meretas - saya mendelegasikannya ke komputer. Mungkin menulis bot jawaban-posting menggunakan StackExchange API? ..
Vi.

4

36. Rasa python - 32

\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Diuji pada Regex101

Saya memiliki tiga regex 32-byte yang siap, dan untungnya salah satunya masih berfungsi: D

Jawaban selanjutnya harus cocok dengan string berikut:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Dan gagal pada string ini:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

1
Kebenaran diverifikasi.
Martin Ender

Kebenaran sebagai regex Perl juga diverifikasi.
Vi.

Mari berharap pertanyaannya tidak aktif hingga besok, karena saya memiliki jawaban 30 karakter yang menunggu untuk dikirim.
Vi.
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.