this post was submitted on 05 Jul 2024
378 points (95.9% liked)

Programmer Humor

31329 readers
14 users here now

Post funny things about programming here! (Or just rant about your favourite programming language.)

Rules:

founded 4 years ago
MODERATORS
 
you are viewing a single comment's thread
view the rest of the comments
[–] yogthos@lemmy.ml 17 points 1 week ago (3 children)

I really like this approach for doing non trivial regex https://github.com/VerbalExpressions

const tester = VerEx()
    .startOfLine()
    .then('http')
    .maybe('s')
    .then('://')
    .maybe('www.')
    .anythingBut(' ')
    .endOfLine();
[–] frezik@midwest.social 2 points 1 week ago* (last edited 1 week ago) (1 children)

I don't. It may look less like line noise, but it doesn't unravel the underlying complexity of what it does. It's just wordier without being helpful.

https://www.wumpus-cave.net/post/2022/06/2022-06-06-how-to-write-regexes-that-are-almost-readable/index.html

Edit: also, these alternative syntaxes tend to make some easy cases easy, but they have no idea what to do with more complicated cases. Try making nested capture groups with these, for instance. It gets messy fast.

[–] JoeyJoeJoeJr@lemmy.ml 7 points 1 week ago (1 children)

it doesn't unravel the underlying complexity of what it does... these alternative syntaxes tend to make some easy cases easy, but they have no idea what to do with more complicated cases

This can be said of any higher-level language, or API. There is always a cost to abstraction. Binary -> Assembly -> C -> Python. As you go up that chain, many things get easier, but some things become impossible. You always have the option to drop down, though, and these regex tools are no different. Software development, sysops, devops, etc are full of compromises like this.

[–] yogthos@lemmy.ml 2 points 1 week ago

Exactly, at the end of the day it's about using the right tool for the job. Code that's clear and declarative is easier to maintain, so it makes sense to default to it, but nothing stops you from using low level constructs if you really need to.

load more comments (1 replies)