Path: csiph.com!eternal-september.org!reader02.eternal-september.org!.POSTED!not-for-mail From: Ben Bacarisse Newsgroups: comp.lang.php Subject: Re: preg_match() return false Date: Mon, 28 Dec 2020 02:02:07 +0000 Organization: A noiseless patient Spider Lines: 41 Message-ID: <877dp2adsw.fsf@bsb.me.uk> References: <87im8n9scy.fsf@bsb.me.uk> Mime-Version: 1.0 Content-Type: text/plain; charset=iso-8859-1 Content-Transfer-Encoding: 8bit Injection-Info: reader02.eternal-september.org; posting-host="aed18b5ebd9eff12874cf77a9da74041"; logging-data="3633"; mail-complaints-to="abuse@eternal-september.org"; posting-account="U2FsdGVkX19gYGgeOjKLwKnH7LoTjck5DSVOyUGN/eU=" Cancel-Lock: sha1:4tKlN6Kcwobm6VNavMGVRvI5+Gc= sha1:/cOfpgYXKFCF9aAJ3rVyHuI4kTE= X-BSB-Auth: 1.4e2ead97102fdd020b0b.20201228020207GMT.877dp2adsw.fsf@bsb.me.uk Xref: csiph.com comp.lang.php:18484 alex <1j9448a02@lnx159sneakemail.com.invalid> writes: > Il 27/12/20 16:50, alex ha scritto: >> Il 27/12/20 16:33, Ben Bacarisse ha scritto: >>> I don't know, but your regexp is odd.  If you delete the second line it >>> matches. >> > You don't need to .+¶ after matching .+¶ because the s >> > modifier means the first will match to the same place the second >> > would. >> >> However, I need this to make sure that there are at least two lines >> between 'Mock message' and '-----' I would ask for that explicitly, rather than relying on the backtracking: (:?[^\n]*\n){2,}----- >>> Also, you don't need \ before - or :. >> >> echo preg_quote('-') . PHP_EOL; >> echo preg_quote(':') . PHP_EOL; >> >> Output: >> >> \- >> \: Should I have been more precise? You don't need \ before - or : in the pattern you wrote. > PS > > Of course, "\n" means the carriage return (PHP_EOL). "\n" means linefeed (sometimes called newline). PHP_EOL is often "\n" but not always. -- Ben.