• chickenf622@sh.itjust.works
    link
    fedilink
    arrow-up
    6
    ·
    10 days ago

    May want to out a warning on this tool that if your checking against a long list of strings you may want to use something else. A massive regex can be a huge performance bottleneck. I know from personally killing a production server by using an inefficient regex on large strings of data.

    • rocket9@feddit.orgOP
      link
      fedilink
      English
      arrow-up
      2
      ·
      10 days ago

      list2regexp will limit each regular expression to matching 10,000 entries by default. Matching against each pattern of 10,000 entries takes around 1 microsecond on a laptop. I’ve fed it several megabytes of IP addresses and it doesn’t choke. That’s kind of the point.

  • rocket9@feddit.orgOP
    link
    fedilink
    English
    arrow-up
    3
    ·
    10 days ago

    Here is an example. Given the following list of strings:

    1.2.3.4
    127.0.0.1
    127.0.0.2
    127.0.0.11
    128.0.0.1
    125.0.0.*
    200.0.0.1
    2001:0db8:85a3:0000:0000:8a2e:0370:1300
    2001:0db8:85a3:0000:0000:8a2e:0370:1330
    2001:0db8:85a3:0000:0000:8a2e:0370:1337
    あいうえお
    あいうえこ
    😃😁😆😐
    😃😁😆
    😃😁🤣
    

    list2regexp will return the following pattern:

    ^(?:1(?:(?:\.(?:2(?:\.(?:3(?:\.(?:4))))))|(?:2(?:(?:5(?:\.(?:0(?:\.(?:0(?:\.(?:.*)))))))|(?:7(?:\.(?:0(?:\.(?:0(?:\.(?:(?:1(?:|(?:1)))|(?:2))))))))|(?:8(?:\.(?:0(?:\.(?:0(?:\.(?:1)))))))))))|(?:2(?:0(?:0(?:(?:\.(?:0(?:\.(?:0(?:\.(?:1))))))|(?:1(?::(?:0(?:d(?:b(?:8(?::(?:8(?:5(?:a(?:3(?::(?:0(?:0(?:0(?:0(?::(?:0(?:0(?:0(?:0(?::(?:8(?:a(?:2(?:e(?::(?:0(?:3(?:7(?:0(?::(?:1(?:3(?:(?:0(?:0))|(?:3(?:(?:0|7))))))))))))))))))))))))))))))))))))))))))|(?:あ(?:い(?:う(?:え(?:(?:お|こ))))))|(?:😃(?:😁(?:(?:😆(?:|(?:😐)))|(?:🤣))))$
    
    • da_cow (she/her)@feddit.orgM
      link
      fedilink
      arrow-up
      3
      arrow-down
      1
      ·
      10 days ago

      This regexp is literally the worst fucking thing I have ever seen. Please never ever use a regexp of that size ever in your production system.

        • rocket9@feddit.orgOP
          link
          fedilink
          English
          arrow-up
          1
          ·
          9 days ago

          As funny as that would be, this has been a surprisingly common misconception.

      • rocket9@feddit.orgOP
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        1
        ·
        10 days ago

        This drive-by criticism is the worst fucking thing I have ever seen. Please never ever use drive-by criticism without any code or references which back up its claims to inform your opinion on others work.

        • da_cow (she/her)@feddit.orgM
          link
          fedilink
          arrow-up
          3
          arrow-down
          1
          ·
          9 days ago

          The reason this is horrible is because its absolutely horrible if you ever have to manually touch this regex ever again.

          This was not meant as a way to criticise your tool, because it is cool what you did there, but using regexp of that size is something I would advise against in an production environment.

          • rocket9@feddit.orgOP
            link
            fedilink
            English
            arrow-up
            2
            arrow-down
            2
            ·
            9 days ago

            So, your criticism is that machine-generated code can be hard to edit when a human needs to touch it. I don’t see how that is relevant here, being human-legible or editable is not a stated goal of the project. Rather than lobbing criticism against any software which machine-generates code for machine consumption, it makes more sense to use your best judgement and choose the software which is right for your use-case. I don’t even want to know why you would ever machine-generate a regexp from a list, not save the list, and then somehow need to edit the regexp without access to the original items. That’s not a software problem.

            • da_cow (she/her)@feddit.orgM
              link
              fedilink
              arrow-up
              2
              ·
              9 days ago

              Yeah its Kind of like that and I do have to admit, that my original comment was bad and that I should have specified it in the original comment.