regex flavors
23.08.2023 1 min readFinally getting around to learning regex
proper, and I’ve been working on some problems. One was to check whether a string had at least one uppercase character AND at least one lowercase character. I tried to use a lookahead for this:
grep -e '^(?=.*[a-z])(?=.*[A-Z])[a-zA-Z]{2,}$' at-least-one-upper-one-lower.md
Ran it on RegExr, which worked. However, this wasn’t returning anything on Ubuntu. So I did some digging, and found this stackoverflow answer (seriously, how did anyone get anything done before S/O):
Extended regular expression doesn’t have positive look-ahead feature. See the regex flavor comparison
To get it to work, you have to run grep
with Perl-flavored regex
, which you can do with the -P
flag:
grep -P '^(?=.*[a-z])(?=.*[A-Z])[a-zA-Z]{2,}$' at-least-one-upper-one-lower.md
Sidenote: regex is hard. But it’s quite fun when you get something that works
Built with Astro and Tailwind 🚀