faqts : Computers : Programming : Languages : Perl : CGI Programming

+ Search
Add Entry AlertManage Folder Edit Entry Add page to http://del.icio.us/
Did You Find This Entry Useful?

2 of 2 people (100%) answered Yes
Recently 2 of 2 people (100%) answered Yes

Entry

I want to look for a text, then grab the next 2 characters after the found text. Please Help!

Apr 25th, 2003 21:18
Colin Thomsen, Chris Leon,


Regular expressions would work well for this job. You need to put the 
unknown text into a string (we'll call it $string) and the text to find 
in another string (call it $textToFind).
Then you apply a regular expression to the string using the format:
$string =~ //;
In your example you want to first match the text to find, which you can 
do:
$string =~ /$textToFind/;
Then you want to return the next two characters, which you do using (). 
Anything inside the () is returned in the special variable $1. The next 
set of () is returned in $2 and so on. To match any character, you can 
use the special '.' matching character:
$string =~ /$textToFind(..)/;
print $1;
Note that the above code assumes that the string does have the text you 
are looking for. If you're not sure, use an if, as follows:
if ($string =~ /$textToFind(..)/) {
    print $1;
} else {
    print "$textToFind not found!";
}
The complete program is listed below:
#!/usr/bin/perl -wT
my $string = "somestring text12";
my $textToFind = "text";
if ($string =~ /$textToFind(..)/) {
	print "$1\n";
}