From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Kevin Rodgers Newsgroups: gmane.emacs.help Subject: Re: string-match bug? Date: Thu, 10 Dec 2009 21:37:41 -0700 Message-ID: References: <4B1F5A38.1030703@easy-emacs.de> <4B1FDF51.1010002@easy-emacs.de> <20091210100106.GA7193@tomas> <87k4wvm6uf.fsf@fh-trier.de> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: 8bit X-Trace: ger.gmane.org 1260506321 32021 80.91.229.12 (11 Dec 2009 04:38:41 GMT) X-Complaints-To: usenet@ger.gmane.org NNTP-Posting-Date: Fri, 11 Dec 2009 04:38:41 +0000 (UTC) To: help-gnu-emacs@gnu.org Original-X-From: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Fri Dec 11 05:38:34 2009 Return-path: Envelope-to: geh-help-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([199.232.76.165]) by lo.gmane.org with esmtp (Exim 4.50) id 1NIxGy-00069M-H7 for geh-help-gnu-emacs@m.gmane.org; Fri, 11 Dec 2009 05:38:32 +0100 Original-Received: from localhost ([127.0.0.1]:47897 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NIxGy-0006MA-CA for geh-help-gnu-emacs@m.gmane.org; Thu, 10 Dec 2009 23:38:32 -0500 Original-Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1NIxGZ-0006LR-Kw for help-gnu-emacs@gnu.org; Thu, 10 Dec 2009 23:38:07 -0500 Original-Received: from exim by lists.gnu.org with spam-scanned (Exim 4.43) id 1NIxGU-0006Jj-7a for help-gnu-emacs@gnu.org; Thu, 10 Dec 2009 23:38:06 -0500 Original-Received: from [199.232.76.173] (port=56721 helo=monty-python.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1NIxGU-0006JX-0h for help-gnu-emacs@gnu.org; Thu, 10 Dec 2009 23:38:02 -0500 Original-Received: from lo.gmane.org ([80.91.229.12]:38859) by monty-python.gnu.org with esmtps (TLS-1.0:RSA_AES_256_CBC_SHA1:32) (Exim 4.60) (envelope-from ) id 1NIxGT-0004ej-Rp for help-gnu-emacs@gnu.org; Thu, 10 Dec 2009 23:38:02 -0500 Original-Received: from list by lo.gmane.org with local (Exim 4.50) id 1NIxGR-00060g-1M for help-gnu-emacs@gnu.org; Fri, 11 Dec 2009 05:37:59 +0100 Original-Received: from c-71-237-24-138.hsd1.co.comcast.net ([71.237.24.138]) by main.gmane.org with esmtp (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 11 Dec 2009 05:37:59 +0100 Original-Received: from kevin.d.rodgers by c-71-237-24-138.hsd1.co.comcast.net with local (Gmexim 0.1 (Debian)) id 1AlnuQ-0007hv-00 for ; Fri, 11 Dec 2009 05:37:59 +0100 X-Injected-Via-Gmane: http://gmane.org/ Original-Lines: 39 Original-X-Complaints-To: usenet@ger.gmane.org X-Gmane-NNTP-Posting-Host: c-71-237-24-138.hsd1.co.comcast.net User-Agent: Thunderbird 2.0.0.23 (Macintosh/20090812) In-Reply-To: <87k4wvm6uf.fsf@fh-trier.de> X-detected-operating-system: by monty-python.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: help-gnu-emacs@gnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Users list for the GNU Emacs text editor List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Original-Sender: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Errors-To: help-gnu-emacs-bounces+geh-help-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.help:70582 Archived-At: Andreas Politz wrote: > tomas@tuxteam.de writes: > >> On Thu, Dec 10, 2009 at 12:34:45AM -0500, Stefan Monnier wrote: >>>> Actually, it has an infinite number of empty strings at position 0 >>>> -- and at every position. >>> Good, thank you. I never took the time to count them, so I always >>> wondered whether there really were enough of them to count as "an >>> infinite number". I'm glad it's settled. >> Far from it! the more interesting question: countable? /me tries in vain >> to hide from Cantor's ghost) >> >> Regards >> -- tomás > > Counting them is easy with the greedy operator. > > (and (string-match "\\(\\)*" "") > (match-end 0)) > > This proofs, empty strings don't exist. It proves that (a) 0 or more empty strings match the empty string and (b) the match ends at the end of the empty string (which having length 0, has start position equal to end position equal to 0 i.e. the returned value). Here's how to count the number of of times the empty string matches any string S at position N: (let ((match-count 0)) (while (string-match "\\(\\)" S N) (setq match-count (1+ match-count) N (match-end 0))) match-count) -- Kevin Rodgers Denver, Colorado, USA