Difference between revisions of "Regular Expression Perl/introduktion"

From Teknologisk videncenter
Jump to: navigation, search
m (New page: Regular expressions - eller Regexp - er et værktøj indbygget i mange programmeringssprog, men er mest berømt på Perl. = Formål med Regexp = Regexp er beregnet til at søge i tekstbase...)
 
m (Regexp syntax)
Line 6: Line 6:
 
= Regexp syntax =
 
= Regexp syntax =
 
Regexp er tegnbaseret og der er derfor en del tegn og sekvenser der skal huskes udenad. Et godt råd er at printe dette [[Media:Regexp Quick Reference.pdf|Regular Expression Quick Reference Guide]] og bruge det til at ''dechifrere'' udtrykkene.
 
Regexp er tegnbaseret og der er derfor en del tegn og sekvenser der skal huskes udenad. Et godt råd er at printe dette [[Media:Regexp Quick Reference.pdf|Regular Expression Quick Reference Guide]] og bruge det til at ''dechifrere'' udtrykkene.
 +
 +
== Simpel tekstsøgning ==
 
Scriptet herunder benytter sig af en indbygget funktion i Perl man blandt andet kan bruge til udvikling af Perl programmer. Det er normalt irreterende at skulle taste de samme data ind fra tastaturet med <STDIN> håndtaget når man skal teste sit program. Det er muligt at bruge <DATA> håndtaget i stedet for og så nederst i filen have et __DATA__ felt. (2 x underscore, DATA, 2 x underscore>)
 
Scriptet herunder benytter sig af en indbygget funktion i Perl man blandt andet kan bruge til udvikling af Perl programmer. Det er normalt irreterende at skulle taste de samme data ind fra tastaturet med <STDIN> håndtaget når man skal teste sit program. Det er muligt at bruge <DATA> håndtaget i stedet for og så nederst i filen have et __DATA__ felt. (2 x underscore, DATA, 2 x underscore>)
 
<source lang=perl>
 
<source lang=perl>
Line 31: Line 33:
 
</source>
 
</source>
 
jensine matcher ikke da det starter med et lille j.
 
jensine matcher ikke da det starter med et lille j.
 +
=== Ignorer store/små bogstaver ===
 +
For at ignorere case på bogstaver - altså store/små - kan '''i''' modifieren anvendes. ''/jens/'''i'''''
 +
<source lang=perl>
 +
while ( chomp(my $line = <DATA>) ) {
 +
  if ( $line =~ /Jens/i ) {
 +
    print "$line Matcher\n";
 +
  } else {
 +
    print "$line Matcher ikke!\n";
 +
  }
 +
}
 +
__DATA__
 +
Jens
 +
Ole
 +
Hans
 +
Jensen
 +
jensine
 +
</source>
 +
Outputtet fra scriptet er
 +
<source lang=text>
 +
Jens Matcher
 +
Ole Matcher ikke!
 +
Hans Matcher ikke!
 +
Jensen Matcher
 +
jensine Matcher
 +
</source>

Revision as of 09:04, 4 October 2009

Regular expressions - eller Regexp - er et værktøj indbygget i mange programmeringssprog, men er mest berømt på Perl.

Formål med Regexp

Regexp er beregnet til at søge i tekstbaseret data. For eksempel logfiler, output fra enheder.

Hvem skal læse dette dokument

Hvis du har lidt indblik i Perl og forstår den generelle syntax, vil du sandsynligvis få noget ud af dette dokument.

Regexp syntax

Regexp er tegnbaseret og der er derfor en del tegn og sekvenser der skal huskes udenad. Et godt råd er at printe dette Regular Expression Quick Reference Guide og bruge det til at dechifrere udtrykkene.

Simpel tekstsøgning

Scriptet herunder benytter sig af en indbygget funktion i Perl man blandt andet kan bruge til udvikling af Perl programmer. Det er normalt irreterende at skulle taste de samme data ind fra tastaturet med <STDIN> håndtaget når man skal teste sit program. Det er muligt at bruge håndtaget i stedet for og så nederst i filen have et __DATA__ felt. (2 x underscore, DATA, 2 x underscore>)

while ( chomp(my $line = <DATA>) ) {
  if ( $line =~ /Jens/ ) {
    print "$line Matcher\n";
  } else {
    print "$line Matcher ikke!\n";
  }
}
__DATA__
Jens
Ole
Hans
Jensen
jensine

Outputtet fra scriptet er

Jens Matcher
Ole Matcher ikke!
Hans Matcher ikke!
Jensen Matcher
jensine Matcher ikke!

jensine matcher ikke da det starter med et lille j.

Ignorer store/små bogstaver

For at ignorere case på bogstaver - altså store/små - kan i modifieren anvendes. /jens/i

while ( chomp(my $line = <DATA>) ) {
  if ( $line =~ /Jens/i ) {
    print "$line Matcher\n";
  } else {
    print "$line Matcher ikke!\n";
  }
}
__DATA__
Jens
Ole
Hans
Jensen
jensine

Outputtet fra scriptet er

Jens Matcher
Ole Matcher ikke!
Hans Matcher ikke!
Jensen Matcher
jensine Matcher