Eine andere Art von Meta Regex Golf


42

Hinweis: Auf vielfachen Wunsch habe ich die Regeln etwas gelockert:

  • Die maximale Regex-Größe wächst alle 5 Antworten um 1 Byte . Antwort N kann bis zu 29 + ⌈N / 5⌉ Bytes verwenden.
  • Die Punktzahl jeder Antwort ist (M / (30 + N / 5)) N

Beim Regex-Golf erhalten Sie zwei Saitensätze und müssen den kürzesten Regex erstellen, der mit allen Saiten des ersten Satzes übereinstimmt, bei allen Saiten des zweiten Satzes jedoch nicht funktioniert.

Das ist, was wir tun werden, aber jedes Mal, wenn jemand antwortet, wird seine Regex selbst zu einem der beiden Sätze von Zeichenfolgen (nach eigener Wahl) hinzugefügt. Daher gibt es bei dieser Herausforderung eine strikte Reihenfolge der Antworten.

Lass uns ein Beispiel durchgehen:

  • Sagen wir, ich beginne das mit abc(was ich nicht will) und lege es in das Matchset .
  • Dann wäre eine gültige zweite Antwort a, da sie mit der obigen übereinstimmt (und es gibt keine Zeichenfolgen, die noch fehlschlagen müssen). Sagen wir, diese Antwort geht in den Fail- Satz.
  • Jetzt muss die dritte Antwort passen, abcaber fehlschlagen a. Eine mögliche dritte Antwort ist daher b. Lassen Sie uns dies in das Match- Set setzen.
  • Die vierte Antwort hat jetzt übereinstimmen abcund b, aber nicht auf a. Wir werden doppelte Antworten nicht zulassen, also wäre ein gültiger regulärer Ausdruck c|b.

Wichtig ist, dass Ihre Antwort so kurz wie möglich ist. Dies mag für die ersten paar Antworten trivial sein, aber sobald wir einige Antworten erhalten haben, sollte es immer schwieriger werden, die gewünschte Übereinstimmung mit so wenigen Zeichen wie möglich zu erzielen.

Für die eigentliche Herausforderung enthält anfangs die Übereinstimmungsgruppe PPCGund die Fehlergruppe [PPCG], und ich habe bereits die erste Antwort bereitgestellt.

Antworten

Das Entscheidende an dieser Herausforderung ist, dass immer nur eine Person antworten kann und jede Antwort von der vorherigen abhängt .

Es sollte niemals zwei Antworten mit der gleichen geben N. Wenn zwei Personen gleichzeitig für Neinen antworten, sollte derjenige, der später geantwortet hat (auch wenn es ein paar Sekunden Unterschied sind), seine Antwort gnädig löschen.

Versuchen Sie, die folgenden Schritte einzuhalten, wenn Sie Ihre Antwort veröffentlichen, um den Vorgang etwas reibungsloser zu gestalten:

  • Stellen Sie sicher, dass jemand die Richtigkeit der vorherigen Antwort unabhängig überprüft hat (und einen entsprechenden Kommentar hinterlassen hat).
  • Nehmen Sie die beiden in der vorherigen Antwort gefundenen Testsätze und schreiben Sie eine Regex, die allen Zeichenfolgen in einem Satz und keiner im anderen entspricht.
  • Veröffentlichen Sie Ihre Antwort in folgendem Format:

    # 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]
    

    Wo Nist die Nummer Ihrer Antwort? Bitte kopieren Sie [match set]und [fail set]aus der vorherigen Antwort und hängen Sie Ihre Regex an eine davon an.

    Dies ist absolut wichtig für die Herausforderung! Ich habe ein Dashboard-Tool für die Herausforderung bereitgestellt, um die Buchhaltung zu vereinfachen. Es basiert auf der obigen Vorlage. (Siehe unten im Beitrag.)

  • Ein anderer Benutzer sollte nun Ihre Eingabe überprüfen und einen Kommentar "Richtigkeit überprüft" hinterlassen, wenn Ihre Antwort allen Regeln entspricht (siehe unten). Wenn dies nicht der Fall ist, sollten sie einen Kommentar hinterlassen, der auf Mängel hinweist. Sie haben dann 15 Minuten Zeit , um diese Probleme zu beheben. Wenn Sie dies nicht tun, wird Ihre Antwort als ungültig erachtet und sollte gelöscht werden. Anderenfalls kann eine Antwort auf die vorherige Antwort gesendet werden. (In diesem Fall können Sie jederzeit eine neue Antwort einreichen.)

Diese Vorschriften mögen ziemlich streng erscheinen, aber sie sind notwendig, um ungültige Antworten irgendwo in der Kette zu vermeiden.

Regeln

  • Ein Benutzer kann nur eine Antwort pro 4 Stunden senden. (Dies soll verhindern, dass Benutzer die Frage ständig beobachten und so oft wie möglich beantworten.)
  • Ein Benutzer darf nicht zwei Antworten hintereinander übermitteln. (zB seit ich Antwort 1 eingereicht habe, kann ich Antwort 2 nicht tun, aber ich könnte 3 tun.)
  • Bearbeiten Sie keine verifizierten Antworten. (Auch wenn Sie einen Weg finden, es zu verkürzen!)
  • Sollte ein Fehler zu einem früheren Zeitpunkt in der Kette entdeckt werden (dh nachdem die nachfolgenden Antworten veröffentlicht wurden), sollte die betreffende Antwort gelöscht und aus dem Satz von Zeichenfolgen entfernt werden, bei denen neue Übermittlungen fehlschlagen sollten. Allerdings sind alle Antworten , die da sollte geschrieben wurden nicht geändert werden zu reflektieren.
  • Geben Sie eindeutig eine Geschmacksrichtung an, in der Ihr Regex gültig ist. Sie können jede Geschmacksrichtung auswählen, die online frei getestet werden kann. Es gibt eine gute Liste von Online-Testern bei StackOverflow . Insbesondere Regex101 und RegexPlanet sollten nützlich sein, da sie eine Vielzahl von Geschmacksrichtungen unterstützen. Bitte fügen Sie einen Link zu dem Tester bei, den Sie in Ihrer Antwort ausgewählt haben. Durch Einschalten der Modifikatoren global und multiline im Tester können Sie alle Zeichenfolgen auf einmal testen, eine in jeder Zeile (diese Modifikatoren werden nicht für Ihre Regex-Größe gezählt, da sie für keine einzelne Zeichenfolge benötigt werden).
  • Ihr regulärer Ausdruck darf nicht leer sein.
  • Ihr regulärer Ausdruck für Antwort N darf nicht länger als 29 + ⌈N / 5⌉ Bytes sein. Dh die Antworten 1 bis 5 können bis zu 30 Byte (einschließlich) enthalten, die Antworten 6 bis 10 können bis zu 31 Byte enthalten ... die Antworten 31 bis 35 können bis zu 36 Byte enthalten. Überprüfen Sie das Dashboard, um festzustellen, wie viele Zeichen die nächste Antwort möglicherweise verwendet.
  • Ihr regulärer Ausdruck darf nicht mit einer Zeichenfolge in einem der Testsätze identisch sein.
  • Schließen Sie keine Trennzeichen in Ihre Übermittlung oder Bytezahl ein, auch wenn die jeweilige Hostsprache sie verwendet. Wenn Ihr Regex Modifikatoren verwendet, fügen Sie der Regex-Größe ein Byte pro Modifikator hinzu. ZB /foo/iwären 4 Bytes.

Wertung

Die Punktzahl jeder Antwort wird berechnet als (M / (30 + N / 5)) N , wobei M die Größe des regulären Ausdrucks in Bytes und N die Zahl ist. Die Punktzahl jedes Benutzers ist das Produkt aller Antworten. Der Benutzer mit der niedrigsten Gesamtpunktzahl gewinnt. Im unwahrscheinlichen Fall eines Unentschieden gewinnt der Benutzer mit der neuesten Einreichung. Ich akzeptiere die letzte Antwort des Benutzers.

Wenn Sie es vorziehen, die Ergebnisse zu summieren, können Sie die Ergebnisse jeder Antwort als N * (log (M) - log (30)) berechnen und über alle Antworten aufsummieren . Das gibt die gleiche Ranglistenreihenfolge.

Es ist nicht erforderlich, die Punktzahl einer Antwort in die Antwort aufzunehmen, sondern nur M zu melden . Das Herausforderungs-Dashboard unten in der Frage berechnet die Punktzahlen. Bei zwei sehr genauen Punktzahlen überprüfe ich die Ergebnisse mithilfe von Typen mit willkürlicher Genauigkeit.

Beachten Sie, dass die Punktzahl jeder Antwort unter 1 liegt. Sie können also die Gesamtpunktzahl verbessern, indem Sie eine neue Antwort eingeben. Je kürzer jedoch jede Ihrer Einsendungen ist, desto effizienter können Sie Ihre Punktzahl senken. Darüber hinaus können spätere Antworten aufgrund des zunehmenden Exponenten eine niedrigere Punktzahl erzielen, obwohl sie länger sind.

Instrumententafel

Ich habe ein kleines Dashboard-Tool geschrieben, das Stapel-Snippets verwendet und auf der Arbeit von Optimizer basiert . Ich hoffe, dies wird uns helfen, Ordnung in diese von der Antwort abhängigen Herausforderungen zu bringen.

Dies zeigt den aktuellen Status der Herausforderung an - insbesondere, wenn es widersprüchliche Antworten gibt, wenn eine Antwort überprüft werden muss oder wenn die nächste Antwort veröffentlicht werden kann.

Es wird auch eine Liste aller Antworten mit Punktzahlen sowie eine Rangliste aller Benutzer erstellt. Bitte halten Sie sich an das oben angegebene Herausforderungsformat, damit das Dashboard die relevanten Zeichenfolgen aus Ihren Antworten auslesen kann. Andernfalls werden Sie möglicherweise nicht in die Bestenliste aufgenommen.

Bitte lassen Sie mich wissen ( idealerweise im Chat ), wenn Sie Fehler entdecken oder Ideen haben, wie die Nützlichkeit des Tools verbessert werden könnte.


Es stellte sich heraus, dass die Regeln etwas strenger waren als ich beabsichtigt hatte. Nach einigen Gesprächen im Chat überlege ich, die Regeln ein wenig zu lockern, nachdem das Kopfgeld aufgebraucht ist. Ich werde 3 Kommentare zu den Optionen posten, die mir unten einfallen. Bitte geben Sie Ihre Präferenz an, indem Sie über die Kommentare abstimmen.
Martin Ender

2
Regeln sind Regeln. Verändere sie nicht. Es mag eine Schande sein, dass es so gut wie unmöglich ist, eine andere Antwort zu posten, aber das rechtfertigt keine Änderung der Regeln.
Martin Ender

2
Lassen Sie alle 10 Antworten ein zusätzliches Byte zu . Dementsprechend ändern die Antwort - Score (M / (30 + N / 10)) ^ N . Dies würde rückwirkend angewendet, so dass die nächste Antwort bis zu 32 Bytes verwenden könnte. Die Änderung der Wertung würde sich nicht auf die ersten beiden Plätze in der Rangliste auswirken, aber die anderen Benutzer würden etwas gemischt.
Martin Ender

8
Lassen Sie alle 5 Antworten ein zusätzliches Byte zu . Dementsprechend ändern die Antwort - Score (M / (30 + N / 5)) ^ N . Dies würde rückwirkend angewendet, so dass die nächste Antwort bis zu 35 Bytes verwenden könnte. Die Änderung der Wertung würde sich nicht auf die ersten beiden Plätze in der Rangliste auswirken, aber die anderen Benutzer würden etwas gemischt.
Martin Ender

4
Ihr Leute seid seltsam und verdreht. Warum sollten Sie sich das antun? (Es macht Spaß zu lesen: P)
Joe

Antworten:


5

42. Pythongeschmack - 38

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

Getestet auf Regex101

Der Mangel an Entropie in den letzten Antworten wurde mir klar ... (hätte das früher tun sollen)

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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$]*\$$

Und versage auf diesen Saiten:

[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$

Richtigkeit überprüft.
Martin Ender

Mein Programm hat Mühe, eine Antwort mit weniger als 45 Zeichen zu finden ...
Vi.

@Vi. Nun, ich kann sagen, dass es zumindest eine 38-Lösung gibt, aber natürlich wäre es interessant, wenn jemand es schafft, niedriger zu werden :)
Sp3000

11

28. Pythongeschmack - 29

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

Getestet auf Regex101

Es wurde viel herumgespielt - # 4 im Pass-Set ist wahrscheinlich der größte Schmerz, da es eine Teilzeichenfolge eines Regex im Fail-Set ist und auch ein Suffix mit einem anderen Regex im Fail-Set teilt.

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

[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\\

Richtigkeit überprüft.
Martin Ender

9

24 - Pythongeschmack - 29

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

Hier getestet

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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]$

Und versage auf diesen Saiten:

[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
Richtigkeit überprüft.
Feersum

8

10. Pythongeschmack - 19

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

Getestet auf Regex101 .

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
FryAmTheEggman

8

8. ECMAScript-Variante - 14 Bytes

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

Demo

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
FryAmTheEggman

Der Demolink wurde behoben.
Martin Ender

@FryAmTheEggman Das Skript liest die Kommentare, sucht jedoch nur nach "überprüfter Richtigkeit" als Unterzeichenfolge (Groß- / Kleinschreibung wird ignoriert).
Martin Ender

@ MartinBüttner Danke, gut zu wissen.
FryAmTheEggman

3
+1 für Alleingang macht diese Herausforderung 10-mal schwerer
Sp3000

7

2. ECMAScript-Variante - 6 Bytes

^[P\^]

Teste es hier

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

PPCG
^P

Und versage auf diesen Saiten:

[PPCG]
^[P\^]

1
Richtigkeit überprüft.
Martin Ender

7

9. Python Geschmack - 28

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

Getestet auf Regex101

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Ich fand auch, dass dies vor einer Minute nicht funktionierte. Es sind zwei Backslashes hintereinander erforderlich, um eine Übereinstimmung zu erzielen, daher glaube ich nicht, dass eine Flagge sie speichern könnte.
Feersum

Whoops .... Hätte ein * anstelle von + sein sollen. Ich habe meine Antwort bearbeitet
ndc5057

Richtigkeit überprüft.
FryAmTheEggman

7

23. PCRE-Geschmack - 28

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

Getestet auf Regex101.

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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]$

Und versage auf diesen Saiten:

[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]$

Was macht [^]das?
Feersum

@feersum In den meisten Varianten ist a ]als erstes Element einer Zeichenklasse (nach optionaler Negation) nur ein Element ]innerhalb der Zeichenklasse und wird nicht geschlossen (da leere Zeichenklassen etwas sinnlos sind). Also [^]]passt alles andere als ]. Die bemerkenswerte Ausnahme ist ECMAScript, das leere Zeichenklassen zulässt. In diesem Fall []stimmt nichts überein, es verhält sich wie (?!)und [^]stimmt mit jedem beliebigen Zeichen überein, was praktisch ist, da ECMAScript keinen sModifikator hat und [\s\S]es schwierig ist, einen Lesevorgang durchzuführen .
Martin Ender

Richtigkeit überprüft.
Martin Ender

7

11. Python - 29

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

► Testen Sie bei RegexPlanet

Fast alle ungültigen Antworten haben eine andere Länge als alle gültigen. Dieser Regex macht davon Gebrauch.

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
Feersum

7

29. PCRE-Geschmack - 28

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

Getestet auf Regex101

Diese Antwort funktioniert immer noch ...

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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\)

Und versage auf diesen Saiten:

[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\\

Richtigkeit überprüft.
Martin Ender

1
Nett! Abgesehen von Umbesetzungen hatte ich genau das
Sp3000 20.11.14

Ich habe versucht, dies mithilfe eines genetischen Algorithmus zu berechnen, aber es wurde nur ein regulärer Ausdruck mit 30 Zeichen erzeugt. Führen Sie ihn jetzt aus, um die nächste Antwort zu erhalten. Aktuelles Ergebnis - 32 Zeichen.
Vi.

@Vi Ein genetischer Algorithmus wie, interessante Ideen, die Sie dort haben: P
Sp3000

@ Sp3000, jetzt 30 Zeichen ... Aber eine andere Antwort ist eingetroffen, muss also neu gestartet werden.
Vi.

6

31. Perlgeschmack - 29

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

Ich weiß nicht, wie es funktioniert, es wurde von meinem ersten Versuch mit genetischen Algorithmen produziert . Es gibt eine Programmausgabe , die die Antwort erwähnt.

Die nächste Antwort muss passen:

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\)

und scheitern:

[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|\\]*$

Richtigkeit überprüft.
Martin Ender

Ahaha, schön - hast du die vorherigen Antworten als Ausgangsbasis für die Bevölkerung genommen oder sah sie einfach so aus wie die vorherigen?
Sp3000,

Die übergebenen und fehlgeschlagenen Zeichenfolgen werden als anfängliche Bausteine ​​verwendet. Sie wurden nach einiger Zeit wegen lokaler Minima verboten. Wie das geht, sehen Sie im Programmprotokoll: Die Zahl in Klammern nach "metric =" ist das Maß dafür, wie schnell wir vorankommen. Es ist für lange Zeit niedrig, wir sperren aktuelle Antworten und setzen sie zurück.
Vi.

(In der Zwischenzeit wurde bereits ein 31-stelliger Kandidat für die nächste Antwort gefunden.)
Vi.

Oh, das Limit ist gestiegen? Es ist nicht 29? Auf diese Weise wird es nicht bald enden ... Ich denke, die größte Herausforderung besteht darin, den letzten, den ultimativen Regex zu finden.
Vi.

6

32. PCRE - 30 Bytes

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

Getestet auf Regex101

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen :

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\)

Und versage auf diesen Saiten :

[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
Richtigkeit überprüft.
Martin Ender

Warum wird es zur "Fehler" -Liste hinzugefügt? Es scheitert schon an sich selbst, kann also ohne Modifikationen als nächste Antwort dienen. Ich nehme an, für jede Antwort gibt es keine Wahl, an welche Liste sie angehängt werden soll.
Vi.

3
@Vi. Ich denke, Hwnd fühlt sich heute gut an
Sp3000 24.11.14

Ich werde es schwieriger machen, da es weitergeht.
Hwnd

5

1. ECMAScript-Variante - 2 Bytes

^P

Testen Sie es auf Regex101.

Die anfängliche Übereinstimmungsmenge ist PPCGund die fehlerhafte Menge [PPCG]. Deshalb testet diese Regex einfach , dass die Zeichenfolge beginnt mit P.

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

PPCG
^P

Und versage auf diesen Saiten:

[PPCG]

3
Richtigkeit überprüft.
Beta Decay

5

3. ECMAScript-Variante - 6 Bytes

[^\]]$

Teste es hier

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

PPCG
^P

Und scheitern Sie an diesen Saiten:

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

1
Richtigkeit überprüft.
Beta Decay

5

7. Python-Geschmack - 16

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

Getestet auf Regex101

Muss ein \ zur Trefferliste hinzufügen :)

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
NinjaBearMonkey

Das ... das ist verschlagen.
wchargin

@WChargin Danke :) Sie sollten sich einige Antworten von user23013 oder n̴̖̋h̷͉̃ã̷͉h̷̭̿d̸̡̅ẗ̵̨́ ansehen; einige sind ziemlich "
hinterhältig

5

12. ECMAScript-Geschmack - 17

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

Teste es hier .

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
Martin Ender

5

22. PCRE-Geschmack - 29 Bytes

Da das Original # 22 1 Stunde lang nicht geändert wurde, gehe ich davon aus, dass es ungültig geworden ist.

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

Demo

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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]$

Und versage auf diesen Saiten:

[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
Richtigkeit überprüft. (Und ja, das stimmt, die vorherigen 22 sind jetzt ungültig.)
Martin Ender

5

26. Pythongeschmack - 28

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

Test auf Regex101

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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}$|$)|\$\?

Und versage auf diesen Saiten:

[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)$|~

Richtigkeit überprüft.
Martin Ender

5

30. Pythongeschmack - 28

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

Getestet auf Regex101

Wenn es einen Willen gibt ...

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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\)

Und versage auf diesen Saiten:

[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|\\]*$

Richtigkeit überprüft.
Jimmy23013

5

37. Perlgeschmack - 30

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

Einreichung auf Regex101 .

Die Lösung wurde mit demselben Programm wie zuvor erstellt. Das Programm hat auch 29-Zeichen-Lösung gedruckt \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, ich weiß nicht warum, wie es aussieht, als wäre es ein Regex ...

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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\^|\|..\)

Und versage auf diesen Saiten:

[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.\)

Richtigkeit überprüft.
Martin Ender

Ahaha, ich bin ziemlich genervt, dass ich das nicht verstanden habe, nachdem ich mit der ersten Halbzeit so weit gekommen bin: P
Sp3000 25.11.14

5

40. PCRE - 33 Bytes

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

Getestet auf Regex101

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen :

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[+^]

Und versage auf diesen Saiten :

[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$]*\$$

Richtigkeit überprüft.
Vi.

1
Ich habe eine 35, bin aber nicht zufrieden damit, also werde ich sehen, ob ich etwas interessanteres bekommen kann
Sp3000,

Und ich habe 3 Optionen für eine 32-stellige Antwort, aber die ganze Herausforderung wurde ein bisschen langweilig (insbesondere die Buchhaltung von Regex101-Einsendungen und Listen von Fail / Pass-Zeichenfolgen). Wenn jemand möchte, kann ich eine Antwort posten.
Vi.

4

4. ECMAScript-Variante - 5 Bytes

^\^?P

Teste es hier .

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

PPCG
^P

Und versage auf diesen Saiten:

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

1
Richtigkeit überprüft.
Beta Decay

4

5. ECMAScript-Variante - 6 Bytes

^[P^]P

Getestet auf Regex101 .

Zeit, die Dinge mit dem Erfolgsset ein wenig aufzupeppen.

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

PPCG
^P
^[P^]P

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
FryAmTheEggman

4

6. ECMAScript-Variante - 9 Bytes

[^?][PG]$

Getestet auf Regex101 .

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

1
Richtigkeit überprüft.
FireFly

4

14. PCRE-Geschmack - 25

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

Getestet auf Regex101

Das wird langsam ziemlich schwierig.

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Richtigkeit überprüft.
Martin Ender

4

15. PCRE-Geschmack - 26

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

Getestet auf Regex101

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

1
Richtigkeit überprüft.
FireFly

4

16. PCRE-Geschmack - 21

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

Getestet mit Regex 101 .

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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

Und versage auf diesen Saiten:

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

Es passt nicht zusammen PPCG.
Jimmy23013

@ user23013 behoben
es1024

Richtigkeit überprüft.
Jimmy23013

4

25. PCRE-Geschmack - 29

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

Hier getestet. (Der reguläre Ausdruck "test" enthält einen zusätzlichen Code \n, um sicherzustellen, dass keine Übereinstimmung mehrere Zeilen umfasst. Dies ist nicht erforderlich, um jede einzelne Zeichenfolge zuzuordnen.)

Das war eine tief hängende Frucht! :) Ich muss allerdings Plannapus gratulieren, dieser Regex ist für die aktuellen Testsätze erstaunlich elegant. Wenn Sie diese Antwort positiv bewerten möchten, stellen Sie sicher, dass Sie auch die vorherige positiv bewerten!

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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]$

Und versage auf diesen Saiten:

[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
Richtigkeit überprüft.
Feersum

4

35. PCRE - 35 Bytes

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

Getestet auf Regex101

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen :

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\)

Und versage auf diesen Saiten :

[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\\|]+$|\.[)$-](?!.!)

Mein Prüfer zeigt keine Fehler an.
Vi.

Richtigkeit überprüft. (@Vi., Das Dashboard sucht nach diesem bestimmten Ausdruck.)
Martin Ender

Ich habe zwar über die Verwendung dieses Ausdrucks nachgedacht, war mir aber nicht sicher, ob ich meinen Kommentar maßgeblich machen möchte.
Vi.

Meine andere, bereits erwähnte 34-stellige Antwort scheint hier zu funktionieren. Warte 4 Stunden (oder so) ...
Vi.

Ich kümmere mich nicht um das Hacken - ich delegiere es an den Computer. Vielleicht schreiben Sie einen Antwort-Posting-Bot mit StackExchange API? ..
Vi.

4

36. Pythongeschmack - 32

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

Getestet auf Regex101

Ich hatte drei 32-Byte-reguläre Ausdrücke parat und zum Glück funktioniert einer davon noch: D

Die nächste Antwort muss mit den folgenden Zeichenfolgen übereinstimmen:

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\^|\|..\)

Und versage auf diesen Saiten:

[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
Richtigkeit überprüft.
Martin Ender

Die Korrektheit als Perl-Regex wird ebenfalls überprüft.
Vi.

Hoffen wir, dass die Frage bis morgen inaktiv ist, da ich eine ausstehende 30-stellige Antwort zum Posten habe.
Vi.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.