• dactylotheca
    link
    fedilink
    English
    755 months ago

    Some people, when confronted with a problem, think “I know, I’ll use regular expressions.” Now they have two problems.

    • qaz
      link
      265 months ago

      Regex really isn’t that bad when using named capture groups.

      • dactylotheca
        link
        fedilink
        English
        175 months ago

        Oh yeah they definitely have uses, but there’s a real tendency for people to go a bit crazy with them. Complex regexen aren’t exactly readable, there’s all kinds of fun performance gotchas, there’s sometimes other tools/algorithms that are more suitable for the task, and sometimes people try to use them to eg. parse HTML because they don’t know that it is literally impossible to use regular expressions to parse languages that aren’t regular

          • dactylotheca
            link
            fedilink
            English
            7
            edit-2
            5 months ago

            Oh yeah, extensions which make them non-regular definitely can make it possible, but just because it’s now somewhat possible with some regex engines doesn’t mean it’s a good idea

        • @FooBarrington
          link
          55 months ago

          I’ve once written a JS decompiler (de-bundler?) using ~150 regex for step-wise transformations. Worked surprisingly well!

            • @FooBarrington
              link
              25 months ago

              Well… No new ones, at least? Though it was around that time that I started hearing whispers in the night… “You can use WASM to ship Client-Side PHP”

        • @[email protected]
          link
          fedilink
          English
          35 months ago

          it is literally impossible to use regular expressions to parse languages that aren’t regular

          It’s impossible to parse the whole syntax tree, but that doesn’t mean you can’t get the subset you’re interested in.

    • @MashedTech
      link
      25 months ago

      I learned Regex once and now it just works. Only problem for me is using MacOS so the Regex flavors aren’t consistent. But once I sort that, it’s smooth sailing.

  • @[email protected]
    link
    fedilink
    English
    465 months ago

    Regex feels distinctly eldritch to me. Like, a lot of computing knowledge feels like magic, but regex feels like the kind of magic you get by consorting with dark forces

    • TunaCowboy
      link
      435 months ago

      regex feels like the kind of magic you get by consorting with dark forces

      AKA reading the manual.

      • @Tangent5280
        link
        55 months ago

        Im a good christian boy thats why I refuse to read the manual

    • @VegOwOtenksOP
      link
      10
      edit-2
      5 months ago

      I don’t actually know whether POSIX grep would support named groups :o

      • qaz
        link
        15 months ago

        Don’t have you have to use the -P flag?

    • kubica
      link
      fedilink
      35 months ago

      I don’t fully disagree but you are walking on a fine line…

  • @itsathursday
    link
    165 months ago

    Named groups are nice but can I please define a group more than once because maybe I want to group my data and consolidate values in a logical way without you complaining I have already used a group previously. I know I did, I’m the one telling you, now capture it twice!

  • @jaybone
    link
    85 months ago

    Can you actually name capture groups, or this means how you can refer to them by number?

    • @VegOwOtenksOP
      link
      245 months ago

      You can use backreferences \1 \2 etc. but you can also give them names explicitly.
      it looks like this: (?<name>inner-regex)
      Some flavors support it, kotlins doesn’t apparently.

    • @[email protected]
      link
      fedilink
      English
      15 months ago

      In modern languages you can name them with labels as well yes. Not sure about the syntax right now. Something like (?label:…) I think

      • qaz
        link
        45 months ago

        It’s (?<NAME>...) and those are the named capture groups referred to in the post.