Date: Sat, 29 May 2004 10:01:51 -0700 From: Saint Aardvark the Carpeted <aardvark@saintaardvarkthecarpeted.com> To: JJB <Barbish3@adelphia.net> Cc: "freebsd-questions@FreeBSD. ORG" <freebsd-questions@freebsd.org> Subject: Re: Perl metacharacters Message-ID: <20040529170151.GB28582@hardesty.saintaardvarkthecarpeted.com> In-Reply-To: <MIEPLLIBMLEEABPDBIEGAELEFPAA.Barbish3@adelphia.net> References: <MIEPLLIBMLEEABPDBIEGAELEFPAA.Barbish3@adelphia.net>
next in thread | previous in thread | raw e-mail | index | archive | help
JJB disturbed my sleep to write: > if (/(abuse\@.* )/) > { > $abuse_email = ${1}; > } [snip] > print($abuse_email) shows that it contains > abuse@xxxxx.xxx for probes, port scans etc. > How do I change the if statement so I only get the abuse@xxxxx.xxx > string? You want to minimize how much the bracket grabs. Right now you're telling it to grab as much as it can (".*"); a better solution would be (/(abuse\@.*? )/) which tells it to grab the smallest amount it can before the space. Even better would be: (/(abuse\@[\w\.-_]+)\s/) which grabs any word character, period, hyphen or underscore up to a space. Check your local listings to make sure I'm not leaving out any characters legal for domain names. > If (/(Net-.??-.??-.??-0-1)/) > { > $net_block = ${1}; > } > > The data is (Net-xxx-xxx-xxx-0-1) > Each xxx group will all ways by 1 to 3 digits long and different > combinations every time. > When matched I want $net_block just to hold Net-xxx-xxx-xxx-0-1 > What is the correct syntax? Something like: (/(Net-\d{1,3}-\d{1,3}-\d{1,3}-0-1)/ BTW, you'd be better off emailing Perl questions to a Perl-related mailing list or newsgroup, or posting them to Perlmonks.org. -- Saint Aardvark the Carpeted aardvark@saintaardvarkthecarpeted.com Because the plural of Anecdote is Myth.
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20040529170151.GB28582>