Un autre type de golf Meta Regex


42

Avis: Suite à la demande générale, j'ai légèrement assoupli les règles:

  • La taille maximale des expressions rationnelles augmente d'un octet toutes les 5 réponses . La réponse N peut utiliser jusqu'à 29 + «N / 5» octets.
  • Le score de chaque réponse sera (M / (30 + N / 5)) N

Dans Regex Golf, on vous donne deux jeux de chaînes et il vous est demandé de créer la regex la plus courte qui correspond à toutes les chaînes du premier ensemble, mais échoue pour toutes les chaînes du second.

C'est ce que nous allons faire, mais chaque fois que quelqu'un répond, son regex lui-même sera ajouté à l'un des deux jeux de chaînes (de son choix). Par conséquent, il y a un ordre strict pour répondre à ce défi.

Passons en exemple:

  • Supposons que je commence avec abc(ce que je ne ferai pas) et que je le mette dans le match set.
  • Ensuite, une deuxième réponse valide serait a, car elle correspond à ce qui précède (et aucune chaîne ne doit encore échouer). Dites que cette réponse va dans le jeu d' échec .
  • Maintenant, la troisième réponse doit correspondre abcmais échouer a. Une troisième réponse possible est donc b. Mettons cela dans le jeu d' allumettes .
  • La quatrième réponse doit maintenant correspondre abcet b, mais échouer a. Nous interdirons les doublons de réponses, ainsi une expression rationnelle valide serait c|b.

L'important est que votre réponse soit aussi courte que possible. Cela peut paraître trivial pour les premières réponses, mais une fois que nous avons obtenu quelques réponses, il devrait devenir de plus en plus difficile d'obtenir la correspondance souhaitée dans le moins de caractères possible.

Pour le défi réel, le jeu de correspondance contient initialement PPCGet le jeu d'échec contient [PPCG], et j'ai déjà fourni la première réponse.

Répondre

L’essentiel pour comprendre ce défi est qu’une seule personne à la fois peut répondre et que chaque réponse dépend de celle qui la précède .

Il ne devrait jamais y avoir deux réponses avec le même N. Si deux personnes répondent simultanément pour certaines personnes N, celle qui a répondu plus tard (même si la différence est de quelques secondes) devrait effacer gracieusement leur réponse.

Pour que cela fonctionne un peu mieux, essayez de vous en tenir aux étapes suivantes lorsque vous publiez votre réponse:

  • Assurez-vous que quelqu'un a indépendamment vérifié l'exactitude de la réponse précédente (et laissé un commentaire correspondant).
  • Prenez les deux ensembles de tests trouvés dans la réponse précédente et écrivez une expression régulière qui correspond à toutes les chaînes d'un ensemble et aucune à l'autre.
  • Postez votre réponse dans le format suivant:

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

    Nest le numéro de votre réponse. Veuillez copier [match set]et [fail set]de la réponse précédente, et ajouter votre regex à l' un d'eux.

    C'est absolument vital pour le défi! J'ai fourni un outil de tableau de bord pour le défi d'aider à la comptabilité, et il s'appuie sur le modèle ci-dessus. (Voir bas de l'article.)

  • Un autre utilisateur devrait maintenant examiner votre soumission et laisser un commentaire «Correction de l'exactitude vérifiée» si votre réponse respecte toutes les règles (voir ci-dessous). Si ce n'est pas le cas, ils devraient laisser un commentaire signalant les défauts éventuels. Vous avez alors 15 minutes pour résoudre ces problèmes. Si vous ne le faites pas, votre réponse sera considérée comme non valide, devrait être supprimée et quelqu'un d'autre pourrait poster une réponse de suivi à la précédente. (Si cela se produit, vous êtes libre de soumettre une nouvelle réponse à tout moment.)

Ces réglementations peuvent sembler assez strictes, mais elles sont nécessaires pour éviter les réponses non valides quelque part dans la chaîne.

Règles

  • Un utilisateur ne peut soumettre qu'une seule réponse par période de 4 heures. (Ceci afin d’empêcher les utilisateurs de regarder constamment la question et de répondre autant que possible.)
  • Un utilisateur ne peut pas soumettre deux réponses consécutives. (par exemple, depuis que j'ai soumis la réponse 1, je ne peux pas répondre à la question 2, mais je pourrais en faire la réponse 3.)
  • Ne modifiez pas les réponses vérifiées. (Même si vous trouvez un moyen de le raccourcir!)
  • Si une erreur est découverte plus tôt dans la chaîne (c'est-à-dire après l'affichage des réponses de suivi), la réponse fautive doit être supprimée et sera supprimée de l'ensemble des chaînes sur lesquelles les nouvelles soumissions échouent. Cependant , toutes les réponses postées depuis ne doivent pas être modifiées pour refléter.
  • Indiquez clairement une des saveurs dans lesquelles votre regex est valide. Vous pouvez choisir n’importe quelle saveur librement testable en ligne. Il existe une bonne liste de testeurs en ligne sur StackOverflow . En particulier, Regex101 et RegexPlanet devraient être utiles, car ils prennent en charge une grande variété de saveurs. Veuillez inclure un lien vers le testeur que vous avez choisi dans votre réponse. En activant les modificateurs lobal get multiline dans le testeur, vous pouvez tester toutes les chaînes en même temps, une sur chaque ligne (ces modificateurs ne sont pas pris en compte dans la taille de votre expression régulière, car ils ne sont pas nécessaires pour une chaîne individuelle).
  • Votre regex ne doit pas être vide.
  • Votre expression régulière pour la réponse N ne doit pas dépasser 29 + «N / 5» octets. Par exemple, les réponses 1 à 5 peuvent utiliser jusqu'à 30 octets (inclus), les réponses 6 à 10 peuvent utiliser jusqu'à 31 octets ... les réponses 31 à 35 peuvent utiliser jusqu'à 36 octets. Consultez le tableau de bord pour voir combien de caractères la prochaine réponse peut utiliser.
  • Votre expression rationnelle ne doit pas être identique à une chaîne dans l'un des ensembles de test.
  • N'incluez pas de délimiteurs dans votre soumission ni dans le nombre d'octets, même si la langue hôte correspondante les utilise. Si votre regex utilise des modificateurs, ajoutez un octet par modificateur à la taille de la regex. Par exemple /foo/iserait 4 octets.

Notation

Le score de chaque réponse est calculé comme suit: (M / (30 + N / 5)) N , où M est la taille de la regex en octets et N son nombre. Le score de chaque utilisateur est le produit de toutes ses réponses. L'utilisateur avec le score global le plus bas gagne. Dans le cas improbable d'une égalité, l'utilisateur avec la dernière soumission gagne. J'accepterai la dernière réponse de cet utilisateur.

Si vous préférez faire la somme des scores, vous pouvez calculer le score de chaque réponse sous la forme N * (log (M) - log (30)) et faire la somme de ces réponses pour toutes les réponses. Cela donnera le même ordre de classement.

Il n'y a pas besoin d'inclure dans la réponse du score d'une réponse, juste rapport M . Le tableau de bord de défi au bas de la question calculera les scores, et dans le cas de deux scores très proches, je vérifierai les résultats à l'aide de types à précision arbitraire.

Notez que le score de chaque réponse est inférieur à 1, vous pouvez donc améliorer votre score global en fournissant une nouvelle réponse. Cependant, plus chacune de vos soumissions est courte, plus vous pouvez réduire votre score efficacement. En outre, les réponses ultérieures peuvent atteindre un score plus faible bien qu’elles soient plus longues en raison de l’exposant en augmentation.

Tableau de bord

J'ai écrit un petit outil de tableau de bord, utilisant Stack Snippets, basé sur le travail d'Optimizer ici . J'espère que cela nous aidera à mettre de l'ordre dans ces défis dépendant de la réponse.

Cela affichera le statut actuel du défi - en particulier, s'il y a des réponses contradictoires, si une réponse doit être vérifiée ou si la réponse suivante peut être postée.

Il produit également une liste de toutes les réponses avec les scores, ainsi qu'un classement de tous les utilisateurs. Veuillez vous en tenir au format de défi ci-dessus pour que le tableau de bord puisse lire les chaînes pertinentes dans vos réponses. Sinon, vous pourriez ne pas être inclus dans le classement.

Faites-moi savoir ( idéalement sur le chat ) si vous repérez des bugs ou si vous avez des idées pour améliorer l'utilité de l'outil.


Les règles se sont avérées un peu plus strictes que je ne le pensais. Après quelques discussions sur le chat, j'envisage de relâcher les règles un peu après la fin de la prime. Je vais poster 3 commentaires pour les options que je peux penser ci-dessous. Veuillez indiquer votre préférence en votant sur les commentaires.
Martin Ender

2
Les règles sont les règles. Ne les change pas. Il serait peut-être dommage qu'il soit quasiment impossible d'envoyer une autre réponse, mais cela ne justifie pas de changer les règles.
Martin Ender

2
Prévoir un octet supplémentaire toutes les 10 réponses. Corrélativement, changer le score de réponse à (M / (30 + N / 10)) ^ N . Ceci serait appliqué rétroactivement, de sorte que la réponse suivante pourrait utiliser jusqu'à 32 octets. Le changement de score n'affectera pas les deux premières places du classement, mais les autres utilisateurs seront quelque peu brassés.
Martin Ender

8
Prévoir un octet supplémentaire toutes les 5 réponses. Corrélativement, changer le score de réponse à (M / (30 + N / 5)) ^ N . Ceci serait appliqué rétroactivement, de sorte que la réponse suivante pourrait utiliser jusqu'à 35 octets. Le changement de score n'affectera pas les deux premières places du classement, mais les autres utilisateurs seront quelque peu brassés.
Martin Ender

4
Vous êtes étranges et tordus. Pourquoi voudriez-vous vous faire ça? (C'est amusant à lire cependant: P)
Joe

Réponses:


5

42. Saveur Python - 38

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

Testé sur Regex101

Le manque d'entropie dans les dernières réponses m'atteignait ... (j'aurais dû le faire plus tôt)

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

Mon programme a du mal à trouver une réponse de moins de 45 caractères ...
Vi.

@Vi. Eh bien, je peux dire qu’il existe au moins une solution, mais bien sûr, il serait intéressant que quelqu'un parvienne à baisser :)
Sp3000 Le

11

28. Saveur Python - 29

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

Testé sur Regex101

On a beaucoup manigancé. Le n ° 4 de l'ensemble de passes est probablement la plus grande difficulté, car il s'agit d'une sous-chaîne d'une expression rationnelle de l'ensemble d'échecs et partage également un suffixe avec une autre expression régulière de l'ensemble d'échecs.

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

9

24 - Saveur Python - 29

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

Testé ici

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

[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
Correction vérifiée.
Feersum

8

10. Saveur Python - 19

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

Testé sur Regex101 .

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
FryAmTheEggman

8

8. Saveur ECMAScript - 14 octets

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

Démo

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
FryAmTheEggman

Correction du lien de démonstration.
Martin Ender

@FryAmTheEggman Le script lit les commentaires, mais recherche uniquement "l'exactitude vérifiée" en tant que sous- chaîne (en ignorant la casse).
Martin Ender

@ MartinBüttner Merci, c'est bon à savoir.
FryAmTheEggman

3
+1 pour avoir rendu ce défi 10 fois plus difficile tout
seul

7

2. Saveur ECMAScript - 6 octets

^[P\^]

Testez-le ici

La réponse suivante doit correspondre aux chaînes suivantes:

PPCG
^P

Et échouer sur ces chaînes:

[PPCG]
^[P\^]

1
Correction vérifiée.
Martin Ender

7

9. Saveur Python - 28

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

Testé sur Regex101

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

J'ai aussi trouvé que cela ne fonctionnait pas il y a une minute. Il faut deux barres obliques inverses consécutives pour correspondre, donc je ne pense pas qu'un drapeau puisse le sauver.
Feersum

Oups .... aurait dû être un * au lieu de +. J'ai édité ma réponse
ndc5057

La correction vérifiée.
FryAmTheEggman

7

23. Saveur PCRE - 28

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

Testé sur Regex101.

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Que fait [^]-il?
Feersum

@feersum Dans la plupart des variantes, a, en ]tant que premier élément d'une classe de caractères (après une négation facultative), est simplement une partie ]interne de la classe de caractères et ne ferme pas (car les classes de caractères vides sont un peu inutiles). Donc [^]]correspond à tout sauf ]. L'exception notable est ECMAScript, qui autorise les classes de caractères vides. Dans ce cas , []ne correspond pas à quoi que ce soit, il agit comme (?!)et [^]correspond à un caractère, ce qui est pratique, car ECMAScript ne dispose pas d' un smodificateur, et [\s\S]est une douleur à taper une lecture.
Martin Ender

Correction vérifiée.
Martin Ender

7

11. Python - 29

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

► Testez chez RegexPlanet

Presque toutes les réponses non valides ont une longueur différente de toutes les réponses valides. Cette regex utilise cela.

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Feersum

7

29. Saveur PCRE - 28

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

Testé sur Regex101

Cette réponse fonctionne toujours ...

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

1
Agréable! Sauf remaniement, c'est exactement ce que j'avais
Sp3000

J'essayais de calculer cela en utilisant un algorithme génétique, mais il ne produisait que des regex de 30 caractères ... Maintenant, lancez-le pour obtenir la réponse suivante. Résultat actuel - 32 caractères.
Vi.

@Vi Un algorithme génétique hein, des idées intéressantes que vous avez là: P
Sp3000

@ Sp3000, maintenant 30 caractères ... Mais une autre réponse est arrivée, il faut donc redémarrer.
Vi.

6

31. Saveur Perl - 29

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

Je ne sais pas comment cela fonctionne, il a été produit par ma première incursion dans les algorithmes génétiques . Il y a une sortie de programme qui mentionne la réponse.

La réponse suivante doit correspondre:

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

et échouer:

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

Correction vérifiée.
Martin Ender

Ahaha nice - As-tu utilisé les réponses précédentes comme des graines pour la population ou est-ce que cela a fini par ressembler à la précédente?
Sp3000

Les chaînes qui passent et qui échouent sont utilisées comme blocs de construction initiaux. Ils ont été bannis après un certain temps en raison de minimums locaux. Vous pouvez voir comment cela se passe dans le journal du programme: le nombre entre parenthèses après "métrique =" est la mesure de la vitesse à laquelle nous avançons. S'il est bas pour longtemps, nous interdisons les réponses actuelles et réinitialisons.
Vi.

(Pendant ce temps, le candidat à 31 caractères pour la réponse suivante est déjà trouvé)
Vi.

Oh, la limite a augmenté? Ce n'est pas 29? De cette façon, ça ne va pas finir bientôt ... Je pense que le principal défi est de trouver le dernier, la regex ultime.
Vi.

6

32. PCRE - 30 octets

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

Testé sur Regex101

La réponse suivante doit correspondre aux chaînes suivantes :

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

Et échouer sur ces chaînes :

[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
Correction vérifiée.
Martin Ender

Pourquoi est-il ajouté à la liste "échec"? Il échoue déjà sur lui-même et peut donc servir de réponse suivante sans modifications. Je suppose que pour chaque réponse, il n’est pas possible de choisir la liste à ajouter.
Vi.

3
@Vi. Je suppose que hwnd se sent bien aujourd'hui
Sp3000

Je vais le rendre plus difficile car il continue.
hwnd

5

1. Saveur ECMAScript - 2 octets

^P

Testez-le sur Regex101.

Le jeu de correspondance initial est PPCGet le jeu en échec [PPCG]. Par conséquent, cette expression rationnelle vérifie simplement que la chaîne commence par P.

La réponse suivante doit correspondre aux chaînes suivantes:

PPCG
^P

Et échouer sur ces chaînes:

[PPCG]

3
Correction vérifiée.
Beta Decay

5

3. Saveur ECMAScript - 6 octets

[^\]]$

Testez-le ici

La réponse suivante doit correspondre aux chaînes suivantes:

PPCG
^P

Et échouez sur les cordes suivantes:

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

1
Correction vérifiée.
Beta Decay

5

7. Saveur Python - 16

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

Testé sur Regex101

Je dois ajouter un \ à la liste des correspondances :)

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
NinjaBearMonkey

Ceci… c'est sournois.
wchargin

@WChargin Merci :) Vous devriez consulter certaines réponses de user23013 ou nh̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳; certains sont assez 'sournois';)
FryAmTheEggman

5

12. Saveur ECMAScript - 17

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

Testez-le ici .

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

5

22. Saveur PCRE - 29 octets

Puisque le numéro 22 original n’a pas été modifié pendant une heure, je suppose qu’il est devenu invalide.

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

Démo

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

[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
Correction vérifiée. (Et oui, c'est vrai, le précédent 22 est maintenant invalide.)
Martin Ender

5

26. saveur de python - 28

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

Test sur Regex101

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

5

30. Saveur Python - 28

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

Testé sur Regex101

Quand il y a une volonté ...

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Jimmy23013

5

37. Saveur de Perle - 30

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

Soumission sur Regex101 .

La solution a été produite par le même programme que précédemment. Le programme a également imprimé une solution à 29 caractères \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, je ne sais pas pourquoi, car cela ressemble à une regex malformée ...

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

Ahaha Je suis assez énervé de ne pas avoir compris cela après être arrivé si loin en première période: P
Sp3000

5

40. PCRE - 33 octets

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

Testé sur Regex101

La réponse suivante doit correspondre aux chaînes suivantes :

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

Et échouer sur ces chaînes :

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

Correction vérifiée.
Vi.

1
J'ai un 35 mais je ne suis pas satisfait alors je vais voir si je peux obtenir quelque chose de plus intéressant
Sp3000

Et j'ai trois options pour une réponse à 32 caractères, mais l'ensemble du défi est devenu un peu ennuyeux (en particulier la comptabilité des soumissions Regex101 et des listes de chaînes d'échec / réussite). Si quelqu'un veut, je peux poster une réponse.
Vi.

4

4. Saveur ECMAScript - 5 octets

^\^?P

Testez-le ici .

La réponse suivante doit correspondre aux chaînes suivantes:

PPCG
^P

Et échouer sur ces chaînes:

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

1
Correction vérifiée.
Beta Decay

4

5. Saveur ECMAScript - 6 octets

^[P^]P

Testé sur Regex101 .

Il est temps de pimenter un peu les choses avec le succès.

La réponse suivante doit correspondre aux chaînes suivantes:

PPCG
^P
^[P^]P

Et échouer sur ces chaînes:

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

Correction vérifiée.
FryAmTheEggman

4

6. Saveur ECMAScript - 9 octets

[^?][PG]$

Testé sur Regex101 .

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

1
Correction vérifiée.
FireFly

4

14. Saveur PCRE - 25

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

Testé sur Regex101

Cela commence à devenir assez difficile.

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Correction vérifiée.
Martin Ender

4

15. Saveur PCRE - 26

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

Testé sur Regex101

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

1
Correction vérifiée.
FireFly

4

16. Saveur PCRE - 21

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

Testé sur Regex 101 .

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

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

Cela ne correspond pas PPCG.
Jimmy23013

@ user23013 fixe
es1024

Correction vérifiée.
Jimmy23013

4

25. Saveur PCRE - 29

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

Testé ici. (Le regex test en contient une supplémentaire \npour s'assurer qu'aucune correspondance ne s'étend sur plusieurs lignes. Cela n'est pas nécessaire pour faire correspondre chaque chaîne individuelle.)

C'était un fruit à portée de main! :) Je dois cependant féliciter plannapus, cette regex est incroyablement élégante pour les sets de test actuels. Si vous voulez augmenter cette réponse, assurez-vous de passer à la précédente également!

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

[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
Correction vérifiée.
Feersum

4

35. PCRE - 35 octets

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

Testé sur Regex101

La réponse suivante doit correspondre aux chaînes suivantes :

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

Et échouer sur ces chaînes :

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

Mon vérificateur ne montre aucune erreur.
Vi.

Correction vérifiée. (@Vi., Le tableau de bord recherche cette phrase en particulier.)
Martin Ender

Je pensais utiliser cette phrase, mais je ne savais pas si je voulais faire en sorte que mon commentaire fasse autorité.
Vi.

Mon autre réponse de 34 caractères mentionnée précédemment semble fonctionner ici. Attendre 4 heures (ou comme ça) ...
Vi.

Je ne me donne pas la peine de bidouiller, je le délègue à l'ordinateur. Peut-être pouvez-vous écrire un robot de réponse utilisant l’API StackExchange? ..
Vi.

4

36. Saveur Python - 32

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

Testé sur Regex101

J'avais trois regex de 32 octets prêts, et heureusement l'un d'eux fonctionne toujours: D

La réponse suivante doit correspondre aux chaînes suivantes:

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

Et échouer sur ces chaînes:

[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
Correction vérifiée.
Martin Ender

La correction en tant qu'expression rationnelle Perl est également vérifiée.
Vi.

Espérons que la question soit inactive jusqu'à demain, car j'ai une réponse en attente de 30 caractères à poster.
Vi.
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.