Wie auch beim echten Golfen muss man beim Regex-Golf versuchen Dinge zu treffen. Der Unterschied ist nur das Ziel. Wohingegen ein einfaches Loch beim normalen Golf das Ziel ist, gilt es beim Regex-Golf möglichst viele Wörter/Zeichen zu treffen, und zwar die richtigen!Wie, die Richtigen? Tja, es gibt nämlich auch Wörter, die man nicht matchen sollte, tut man es trotzdem gibt es Punktabzug.

Neugierig geworden? Das Spiel gibt es hier: regex-golf

Und für alle, die wie ich davor noch nie etwas von RegEx gehört haben, gibt es hier noch ein paar gute Tutorials: danielfett und regular-expressions


Natürlich könnt ihr euch mit mir messen und eure RegEx mit meinen vergleichen. Ihr wart besser? Dann postet doch darunter, was ihr verwendet habt 🙂

  1. Warmup: (207)
    foo
  2. Anchors: (206)
    (k)$
  3. Ranges: (202)
    [a-f]{4}
  4. Backrefs: (199)
    (\w{3}).*\1
  5. Abba: (11)
    (\w).(\1)
  6. A man, a plan: (166)
    (\w)(\w).?\2\
  7. Prime: (-)
  8. Four: (196)
    .*(.).\1.\1.\1
  9. Order: (168)
    ^a*b*c*d*e*f*g*h*i*l*m*n*o*p*r*s*t*w*y*z*$
  10. Triples: (-)
  11. Glob: (-)
  12. Balance:(26)
    (<>)
  13. Powers: (-)
  14. Long count: (-)
  15. Alphabetical: (-)
  16. Powers 2: (-)

16 Replies to “Regex Golf”

  1. Ich finde den Fehler nicht für Euklid:
    ^(?=.* (x*)$).*\((?!(\1{2,})+, \2+\))\1+, \1+\)

    Warum sind diese REGEX nicht perfekt?

  2. Ziemlich einsam hier zu posten…

    Subtraction (173)
    Typist (122)
    Addition (97)
    Anyway (149)
    Tic-tac-toe (151)

    Vor den Lösungen hätte ich gerne mal Vorschläge gelesen. 🙂

  3. Powers (56):
    ^((((((((((x)\10?)\9?)\8?)\7?)\6?)\5?)\4?)\3?)\2?)\1?$

    Powers 2 (15):
    ^((((((((((x)(\10\10)?)(\9\9)?)(\8\8)?)(\7\7)?)(\6\6)?)(\5\5)?)(\4\4)?)(\3\3)?)(\2\2)?)(\1\1)?$

    1. Powers 2 (35):
      ^(x|x{3}|x{9}|x{27}|x{81}|x{243}|x{729}|x{2187}|x{6561}|x{19683}|x{59049}

  4. Alphabetical (224):
    (?!.*(ast.*ass|asses.*assen|\brest.*\bres|\ber.*\ben|star.*sen))^(a.{5} ?)*(e.{5} ?)*(r.{5} ?)*(s.{5} ?)*(t.{5} ?)*$

  5. Glob (365): \*(er|f|i|ta|v)|(a|er|dl|n|m|t|wi|pe)\*|(^[^*]*) .* \3$
    (ist bestimmt noch optimierbar)

  6. Warmup (207)
    Anchors (208)
    Ranges (202)
    Backrefs (201)
    Abba (191)
    A man, a plan (176)
    Prime (284)
    Four (198)
    Order (191)

        1. Backrefs (201):
          (…).*\1

          Abba (193):
          ^(?!.*(.)(.)\2\1)

          A man, a plan (176):
          ^(.)(.).*\2\1$

          Prime (284):
          ^(?!(x{2,})\1+$

          Four (198):
          (.).\1\1\1
          noch kürzer ist (.)(.\1){3} (199), bin ich aber nicht selbst drauf gekommen

          Order (191):
          ^[a-m][c-o].*[m-z]$

          Triples (566):
          (^(9[^7]|8[^5]|71|74|4[^7]|3[^38]|173|14|06)|00([369]|12|15|0)$)

          Balance (322, nicht perfekt!):
          (^$|^([^>]){2}|^()+$)

          1. Glob (358):
            \*(er|f|i|p|ta|v)|(a|er|dl|n|m|t|wi|pe)\*|(^[^*]*) matches \3$

            Triples (568): wie oben ohne äußere Klammern

            Long count (252):
            ^(?!.*(\d{4}).*\1)

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.