perl unit 6 regular expression

Post on 25-May-2015

292 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Regular Expression (cont.)

Perl Programming for Linux Open Systems and the WWW

VSRiveraIBM Learning ServicesWorldwide Certified Manual

Match Operator

Returns true or false depending on whether its regular expression matches a string

The default match target is $_ Syntax

/regular_expression/ m#regular_expression # m{regular_expression}

Match Operator

Example m/^test(.*) / /^test(.*)/ ; m#test(.*)# m{^ test(.*)} m(^ test(.*)) m>^ test(.*)>

Match Operator Example

#!/usr/bin/perl -w print ("Enter a an expression:\n"); $_=<>;chomp($_); if(m{^regular(.*)} ) { print "$_ is a valid expression\n"; }else { print "$_ is not a valid expression\n"; }

Pattern Binding Operator

Specifies the target of a match operation

Syntax $variable =~ /reg_expr/ $variable !~ /reg_expr/

Pattern Binding Operator Example

#!/usr/bin/perl -w print ("Continue ?: "); $_=<>;chomp($_); if($_ =~ /^[Yy]/) { print "Your answer is Y\n"; }else { print "Your answer is not Y \n"; }

Pattern Binding Operator

#!/usr/bin/perl -w print ("Continue ?: "); $_=<>;chomp($_); if($_ !~ /^[Yy]/) { print "Your answer is not Y\n"; }else { print "Your answer is Y \n"; }

Pattern Binding Operator

#!/usr/bin/perl -w$ans='x';while ($ans !~/^[YyNn]/){ print "Please enter 'Y'es or 'N'o: ";chomp($ans=<>);}

Pattern Binding Operator

#!/usr/bin/perl print "Enter 'Y'es : ";if (($ans = <>) =~ /^[Yy]/){ print "Yes" ;}else{ print "Not Yes"; }

Since $ans is only used once, -w was omitted so that perl will not report the error

Pattern Binding Operator

#!/usr/bin/perl $mystring = "Hello world!";print "Is there a word 'World' in the string

'$mystring'? ";if($mystring =~ m/World/i) { print "Yes"; }else{ print "No";}

Pattern Binding Operator

#!/usr/bin/perl $age = "I fear that I'll live only for 15 years.";print "$age\n";if ($age =~ /(\d*) years/) { print "I'll live only for '$1' years.\n"; }

I fear that I'll live only for 15 years.I'll live only for ‘15' years

Pattern Binding Operator

#!/usr/bin/perl $age = "I fear that I'll live only for a few

years.";print "$age\n";if ($age =~ /(\d*) years/) { print "I'll live only for '$1' years.\n"; }

Output?

Pattern Binding Operator

#!/usr/bin/perl print ("Ask me a question politely:\n");$question = <STDIN>;if ($question =~ /please/i) { print ("Thank you for being polite!\n"); } else { print ("That was not very polite!\n"); }

Substitution Operator

Replaces a string matched with a regular expression

Default target is $_ The traditional delimeters are /// --

any other single character or two pairs of bracket can be used.

Syntax s/pattern/replacement_string/“s” cannot be omitted

Substitution Operator

Example s/UNIX/Linux/ $line =~ s/Java/\.Net/ s@/usr/local/bin/perl@/usr/bin/perl@ S{/usr/bin/javac}[/usr/bin/perl]

Substitution Operator#!/usr/bin/perl $mystring = "Hello world!";print $mystring."\n";$mystring =~ s/world/letran/;print $mystring;

#!/usr/bin/perl $mystring = "Hello World!";print $mystring."\n";$mystring =~ s/world/letran/i;print $mystring;

Substitution Operator

#!/usr/bin/perl $luv="I love the whole world";print "before substitution: ";print "$luv\n";$luv =~ s/the whole world/the clear blue

skies/ ;print "after the substitution: ";print "$luv\n";

Substitution Operator

#!/usr/bin/perl $luv="I love the whole world, i love the

clear blue skies";print "before substitution: ";print "$luv\n";$luv =~ s/love/hate/g ;print "after the substitution: ";print "$luv\n";

Substitution Operator

#!/usr/bin/perl $string = "1 teng 2";$string =~ s/[a-zA-Z]+/$& x 2/e;print "$string“

The e option indicates that the replacement string, $& x 2, is to be treated as an expression

Substitution Operator

#!/usr/bin/perl $string = "its been 14 years of silence, its

been 14 years of pain";$string =~ s/(\d+)/[$1]/g;print $string;

Assignment

Create a program that counts the number of occurrences a digit appears in an input then print the sum of all the occurrences of the digit

Create a program that adds 2 to every number in an input.

top related