|
Too funny. Yeltsin was a good sport there.
Paul Sanders.
If I had more time, I would have written a shorter letter - Blaise Pascal.
Some of my best work is in the undo buffer.
|
|
|
|
|
Becoming fluent in regex is they first step to becoming a wizard.
But a word of warning, never say them out loud, as there is a very good chance you will summon an evil demon (not daemon).
Nothing succeeds like a budgie without teeth.
To err is human, to arr is pirate.
|
|
|
|
|
So you are fluent, then.
Paul Sanders.
If I had more time, I would have written a shorter letter - Blaise Pascal.
Some of my best work is in the undo buffer.
|
|
|
|
|
I'm absolutely with you on that. Also, with PCREs, the /x switch allows you to indent and comment to your heart's content, so you can write perfectly legible code, and there are on-line engines where you can drop your expression and your input and watch step by step while it does its magic. I'm not sure that I do a day's work without writing a regex and I know of no tool with anywhere near the power for parsing text.
~~~~~~~~
<°}}}>«<
|
|
|
|
|
seismofish wrote: I know of no tool with anywhere near the power for parsing text.
Well, tokenizing text at least.
I've written plenty of parsers, everything from LL(1) to GLR. GLR is the most powerful parsing algorithm I know of, allowing you to parse ambiguous grammars and return one tree for each possible interpretation.
My parsers almost always use regex to tokenize, but they don't use it to parse.
Instead, I take those tokens, and a Push Down Automaton and use that to generate trees.
Sorry, not trying to be pedantic so much as continue to convo.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
|
The problem with regular expressions, is that most of us use them once every couple of years and we have to relearn everything from scratch every time.
For someone who's doing RE everyday, it's simple;
I used to have a boss that was like that; we all went to her to write/debug our RE.
(and we never document the RE in the code )
CI/CD = Continuous Impediment/Continuous Despair
|
|
|
|
|
A modest proposal:
Learn the DFA subset. Commit it to memory, and forget the rest.
DFA is the non-backtracking subset of regular expressions
() - capture and group
[] - match char ranges
* - match zero or more
+ - match one or more
? - match zero or one
. - match any single character
| - match a or b (a|b)
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
modified 15-Dec-23 5:19am.
|
|
|
|
|
Agree. A good and practical recommendation!
"A little time, a little trouble, your better day"
Badfinger
|
|
|
|
|
would not
? match zero or one
not be part of that? or is that a posix extension?
"A little song, a little dance, a little seltzer down your pants"
Chuckles the clown
|
|
|
|
|
You're right. Totally spaced that I edited.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
I have worked at several companies where I was the only one that could do bit fiddling/manipulation. I have worked with developers that did not even know what that was.
But I do regexes also.
|
|
|
|
|
I have a love hate relationship with bit twiddling. I don't mind writing that code, but I hate having to read it.
And I hate the process of commenting it because it tends to take a compact thing and make it necessarily verbose.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
Since there are good regex interpreters online, I'm good with using them.
|
|
|
|
|
Love how you post an opinion - always a valid one - and then (I assume) watch the conversation roll through. Bet you’re a gem at parties.
I learned the basics of regular expressions many years ago when learning Perl. While I still use it on occasion for simple searches involving a specific character sequence, I don’t use it regularly (pun acknowledged) - aside from a few functions like email-check etc.
Time is the differentiation of eternity devised by man to measure the passage of human events.
- Manly P. Hall
Mark
Just another cog in the wheel
|
|
|
|
|
It's because I slept. But yeah, I get bit overwhelmed when I get a lot of responses, so I kind of respond as I'm able.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
I didn’t mean to imply you didn’t participate in the conversation, rather that the topic usually starts up a lively discussion.
Time is the differentiation of eternity devised by man to measure the passage of human events.
- Manly P. Hall
Mark
Just another cog in the wheel
|
|
|
|
|
My only reply is "Regexbuddy". Best tool I've found.
Regex's indeed make some difficult things so easy ... and some easy things so difficult. Used in the right place they can be invaluable.
|
|
|
|
|
As an IoT person, you probably have done a lot of assembly language programming. I find that people who love regex tend to also like assembly (including myself). I find regex very elegant, and immensely powerful.
Da Bomb
|
|
|
|
|
I actually avoid assembly wherever I can. We have so many different MCUs that come along, and supply is questionable sometimes, which means switching chips mid project. I mean, Arm Cortex M to Arm Cortex M it's not the worst thing in the world, but you'd still have all the CMSIS stuff you'd have to deal with.
Ergo, I abstract, and use C++ with ZephyrRTOS for my projects.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
honey the codewitch wrote: I know some people hate them,
I certainly don't hate them since I use them quite a bit.
Of course no one provides a comment for what they are intended to match. Nor how the match works.
But I have seen quite a few that I knew to be wrong. That is concerning.
honey the codewitch wrote: - they are cross platform (at least DFA), running in most any engine
Not sure what you mean by that. The engine that runs the regex is the only 'cross platform' part possible in that. The regex expressions themselves depend only on the engine so the expression itself has nothing to do with the platform.
Perhaps you were referring to that the simplest syntax works in different engines though. But once one uses something more complex that is not necessarily true. But at least with javascript, java and C# they to a great extent use the same syntax.
|
|
|
|
|
jschell wrote: Not sure what you mean by that.
What I mean is that regardless of the platform you choose, there is a way to run a DFA regular expression on it.
And yeah, that encompasses many different engines, which themselves are what run on a particular platform, unless you're doing code generation, which I do sometimes for them so I don't have to include the regex engine in my firmware. That code is easy to make cross platform. You'd almost have to put in extra effort to make it otherwise.
I was maybe trying to be too brief by half. I assumed the meaning would come through, but I guess not.
jschell wrote: Perhaps you were referring to that the simplest syntax works in different engines though
In part yes, but also, virtually every platform has a DFA regex engine for it, or alternatively you can generate DFA code for that platform, with something such as my rxcg project. I was intending to imply that as well.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
honey the codewitch wrote: What I mean is that regardless of the platform you choose, there is a way to run a DFA regular expression on it.
If you find a programming system that doesn't allow that then you might prepare for the universe to end. Far as I can recall it would be mathematically impossible for that not to be true.
|
|
|
|
|
jschell wrote: If you find a programming system that doesn't allow that then you might prepare for the universe to end
Maybe I misunderstand you, but if you're speaking in the general sense, you aren't going to run a garbage collected system for example, on an 8-bit platform with 4KB of RAM, hopefully. Even if you could, it wouldn't be practical for anything. A DFA on the other hand will run handily there.
Check out my IoT graphics library here:
https://honeythecodewitch.com/gfx
And my IoT UI/User Experience library here:
https://honeythecodewitch.com/uix
|
|
|
|
|
honey the codewitch wrote: A DFA on the other hand will run handily there.
Reverse that though. What system, which has resources to run anything that is non-trivial, will not run a DFA?
|
|
|
|