From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Jean Louis Newsgroups: gmane.emacs.help Subject: Re: Help improve regular expression for 24 hours format Date: Thu, 24 Nov 2022 11:59:20 +0300 Message-ID: References: Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="30260"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Mutt/2.2.7+37 (a90f69b) (2022-09-02) Cc: Help GNU Emacs To: Yuri Khan Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Thu Nov 24 10:01:24 2022 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1oy86l-0007gn-I9 for geh-help-gnu-emacs@m.gmane-mx.org; Thu, 24 Nov 2022 10:01:23 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1oy867-0004qC-Vq; Thu, 24 Nov 2022 04:00:44 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oy85x-0004oq-BH for help-gnu-emacs@gnu.org; Thu, 24 Nov 2022 04:00:33 -0500 Original-Received: from stw1.rcdrun.com ([217.170.207.13]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1oy85t-0007DY-Bo for help-gnu-emacs@gnu.org; Thu, 24 Nov 2022 04:00:33 -0500 Original-Received: from localhost ([::ffff:102.82.241.226]) (AUTH: PLAIN admin, TLS: TLS1.3,256bits,ECDHE_RSA_AES_256_GCM_SHA384) by stw1.rcdrun.com with ESMTPSA id 00000000000F613C.00000000637F327F.0000373F; Thu, 24 Nov 2022 01:59:42 -0700 Mail-Followup-To: Yuri Khan , Help GNU Emacs Content-Disposition: inline In-Reply-To: Received-SPF: pass client-ip=217.170.207.13; envelope-from=bugs@gnu.support; helo=stw1.rcdrun.com X-Spam_score_int: -18 X-Spam_score: -1.9 X-Spam_bar: - X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, SPF_HELO_PASS=-0.001, SPF_PASS=-0.001 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.help:141127 Archived-At: * Yuri Khan [2022-11-24 09:33]: > On Thu, 24 Nov 2022 at 10:38, Jean Louis wrote: > > > This regular expression shall match 24 hours format such as "12:34". > > > > I do not like how I wrote this regular expression, is there way to > > provide to `rx' function something like "[012]"? > > I’d write it in classic regexp notation as > > \(?:\(?:[01][0-9]|2[0-3]\):\(?:[0-5][0-9]\)\) > > and probably leave like that as it’s readable enough as is. > > If you feel the need for rx here, then, as Tomas said, ‘any’ (aka ‘in’ > and ‘char’) with ranges is your friend. > > (Also I don’t understand your use of ‘(= 1 …)’. Looks redundant to > me.) 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") ➜ "^\\(?:0[0-9]\\|1[0-9]\\|2[0-3]\\):[0-5][[:digit:]]$" I like to have `rx' notation, and it still looks way complicated. (string-match rcd-rx-time "00:00") ➜ 0 (string-match rcd-rx-time "30:00") ➜ nil (string-match rcd-rx-time "24:00") ➜ nil (string-match rcd-rx-time "23:69") ➜ nil (string-match rcd-rx-time "23:59") ➜ 0 -- Jean Take action in Free Software Foundation campaigns: https://www.fsf.org/campaigns In support of Richard M. Stallman https://stallmansupport.org/