this post was submitted on 12 Nov 2023
258 points (95.1% liked)
Programmer Humor
32710 readers
96 users here now
Post funny things about programming here! (Or just rant about your favourite programming language.)
Rules:
- Posts must be relevant to programming, programmers, or computer science.
- No NSFW content.
- Jokes must be in good taste. No hate speech, bigotry, etc.
founded 5 years ago
MODERATORS
you are viewing a single comment's thread
view the rest of the comments
view the rest of the comments
I still don't understand regex at all
I recommend using https://regex101.com/
It explains all parts of your regex and highlights all matches in your example text. I usually add a comment to a regex101 playground if I use a regex in code.
I taught myself Regex using Regex101, so something doesn't add up here.
Does every Regex contain a reverse negative lookup? Do I need to know how to do a reverse negative lookup to write a Regex?
If not, why are you asking?
I have written dozens upon dozens of Regexes without using reverse negative lookups, but I guess according to you I don't really know Regexes because I haven't used those specific features?
You don't need to know all about a subject to know a subject.
I'm not sure why you're bringing up efficiency, I'm not talking about that. If I don't understand a topic, I can't do things with the topic. I use Regexes, so I must at least somewhat understand Regexes.
Well, earlier you were saying that I don't know Regexes if I don't know reverse negative lookups. Funnily enough Regex101 would help me understand your code in this case, so you were wrong on that count too.
Lol. I doubt the inventors of regex know all of regex
Regexes are write-only. No one can understand other peoples regexes
Not only other people's regexes. Mine from last week and before too
Haha
That's also 'cause other people's regex are garbage!
The plural of regex is regrets.
My guess is, that someone started with a small share of features to find a simple solution for the problem, but the complexity of the problem got waaaay out of hand.
Regexes are actually used in formal computer science (if that's the right term), i.e. "proof that this and that algorithm won't deadlock" or something like that.
They're actually really elegant and can cover a lot. But you'll have to learn them by using them.
For the purpose of algorithm verification, the final and/or pushdown automaton or probably sometimes even Turing Machines are used, because they are easier to work with. "Real" regular expressions are only nice to write a grammar for regular languages which can be easily interpreted by the computer I think. The thing is, that regexs in the *nix and programming language world are also used for searching which is why there are additional special characters to indicate things like: "it has to end with ..." and there are shortcuts for when you want that a character or sequence occurs
In "standard" regex, you would only have
So there are only 4 characters which have the same expressive power as the extended syntax with the exception of not being able to indicate, that it should occur at the end or beginning of a string/line (which could even be removed if one would have implemented different functions or options for the tools we now have instead)
So one could say that *nix regex is bloated /s
You are probably thinking of Temporal logic which allows us to model if algorithms and programs terminate etc! It can be represented by using state machines tho!
It's been a while, so I'm quite rusty, especiallyeon the terminology, but I think we modelled feasible sequences of finite and infinite state machines using regexes.
That's how I was forced to learn 'em in uni. ;)
Ohhh I must be confusing the two! But yea, Regex is just NDAs in text form! The course I have had on it is one of my favorites! Really fun stuff
Regex is actually just a way to write (Epsilon) non determistic state automata(ε-NDA) using text! ε-NDA comes from automata theory and they are just a somewhat powerful way to describe state machines! They can kind of be seen as a stepping stone to things like Context-Free Grammars which is what language parsers use to define their language/parsers, and Turing machines! Regex is a fundamental part of computer science, and they are of course incredibly useful in string validation due to their expressive power! If you study at uni and get the chance to take a course in automata theory I recommend it! Personal favorite subject :)
It's really not too bad as long as:
you use a proper IDE (e.g. Regex101) with highlighting and piecewise explanations
you use named capturing groups
you give the regex a descriptive name in your code
People write regex in notepad and complain it doesn't work on the first try...
What part do you not understand?
.*
So you do not understand nothing? That's great to hear.
No, No, they don't understand everything and nothing!
Both statements match 😄
Yes
//////?-.,", duh,?!
Nobody does.
It really depends what you mean by "understand". Every detail of every implementation? Yeah probably not. Enough for most common use cases? It's not as hard as you may think.