help-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Help improve regular expression for 24 hours format


From: Jean Louis
Subject: Re: Help improve regular expression for 24 hours format
Date: Thu, 24 Nov 2022 13:31:00 +0300
User-agent: Mutt/2.2.7+37 (a90f69b) (2022-09-02)

* tomas@tuxteam.de <tomas@tuxteam.de> [2022-11-24 12:40]:
> > Thanks, I make it now this way:
> > 
> > (defvar rcd-rx-time (rx line-start (or "00" "01" "02" "03" "04" "05" "06" 
> > "07" "08" "09" "10" "11" 
> >                                    "12" "13" "14" "15" "16" "17" "18" "19" 
> > "20" "21" "22" "23")
> >                     ":" (any "0" "1" "2" "3" "4" "5") (any digit)
> >                     line-end)
> >   "Regular expression for 24 hours format")
> 
> Hm. By distributive law, (or (seq (any "01") (any digit)) (seq "2" (any 
> "03")))
> should cover your hours part. And for the minutes's first digit, remember that
> `any' can do ranges: (any "0-5") resp. (any (?0 . ?5))
> 
> >  ➜ "^\\(?:0[0-9]\\|1[0-9]\\|2[0-3]\\):[0-5][[:digit:]]$"
> 
> Even taking inspiration on what the "compiler" did of your expression might
> lead you to a simpler (and more readable!) expression, e.g.
> 
>   (or (seq "0" (any digit)) (seq "1" (any digit)) (seq "2" (any "0-3")))
> 
> although slightly longer than my first proposal (perhaps the second is
> "quicker", but I'd let the regexp compiler sort that out: you are
> optimising for the human reader, after all).


Do you have completed example using: 
(or (seq "0" (any digit)) (seq "1" (any digit)) (seq "2" (any "0-3"))) ?

-- 
Jean

Take action in Free Software Foundation campaigns:
https://www.fsf.org/campaigns

In support of Richard M. Stallman
https://stallmansupport.org/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]