3 ms·
This seems cool, but I think that's mostly because the regex you think of as a point of comparison is something like r'^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}$'
by sweeneyrod 7y ago
This seems cool, but I think that's mostly because the regex you think of as a point of comparison is something like
r'^[\w.%+-]+@[\w.-]+\.[a-zA-Z]{2,6}$'
which does look awful. But there's no reason you can't do
username = r'[\w.%+-]+'
domain = r'[\w.-]+'
tld = r'[a-zA-Z]{2,6}'
email = username + r'@' + domain + r'\.' + tld
which is arguably easier to read than the rxe version for someone familiar with regex.
- jazzyjackson 7y agowow I didn't know you could concatenate regexes, thanks
- gnulinux 7y agoWhy not? They're just strings until they're compiled. "Code is data"
- CaptainMarvel 7y agoThe thought of doing this literally didn’t occur to me... I think this is great!
- jazzyjackson 7y agoWell I suppose the r in front of them in python made them look just enough "not a normal string" for me to forget how the + operator might act. My day-to-day experience is in nodejs, where adding one regex object to another coerces them to normal strings first [edit: hey neat, the hackernews form strips emoji from comments, I wonder if that's just ranges of unicode or if there's some crazy regex going on :D]
- baudehlo 7y agoIn Javascript you just need to wrap in `new RegExp(r1 + r2 + r3)`.
- Maro 7y agoYes, an rxe is longer. But: I've been using regexps was 20 years and I can't remember them (both reading and writing). My brain swaps it out, partly bc I know it's one SO away. But that's bad for code readability.
- nerdponx 7y agoAnd/or use verbose mode -- re.VERBOSE or (?x) --for comments and whitespace.