Einfaches Regular Expression Problem oder?
|
Seitenanfang |
| Hallo, ich häng schon seit einer Weile an einem einfachen RegEx Problem, aber ich komm einfach nicht drauf. Mein Problem, ich hab einen Text bei dem ein jedes Wort mit einem bestimmten Tag versehen ist z.B.: Max/NPP Mustermann/NPP ist/NCC super/ADD... ich will aus dem Dokument jetzt einfach alle Wörter mit dem Tag /NPP extrahieren, aber irgendwas mach ich falsch. In meinem Code überspringt er manche die auch /NPP als Tag haben, oder gibt gar nichts aus. Es soll eigentlich ausgeben: Max Mustermann ... Mein sicher nicht perfekter Code [code] #! /usr/bin/perl -w $file = 'C:\Perl Source\readme.txt'; # Filename zuweisen open(FILE, $file); # File öffnen while(<FILE>){ #$match=$_; $match = m/(.+?)\/NNP$/; print "$1 \n"; } close(FILE); [code/] für verbesserungs Vorschläge bin ich sehr Dankbar! Gruß backstaia_ki
Datum: 19.12.2006-12:58

|
re: Einfaches Regular Expression Problem oder?
|
Seitenanfang |
Schau mal ob das hier weiterhilft:
use strict; use warnings;my $file = 'C:\Perl Source\readme.txt'; # Filename zuweisen open(FILE, $file); # File öffnen while(<FILE>){ my $match=$_; my @ergebnis; push(@ergebnis,$match =~ /\s*([^\/NPP]+)\/NPP/g); foreach(@ergebnis){ print "$_\n"; } } close(FILE);
Gruß TommyB
Datum: 19.12.2006-14:08

|
re: Einfaches Regular Expression Problem oder?
|
Seitenanfang |
| Oh verdammt bist du gut! Funkt einwandfrei! Auf das wäre ich in 100 Jahren nicht gekommen. Das mit dem Match auf das Leerzeichen und auf das Ende des strings \/NPP war mir klar, aber das dazwischen ([^\/NPP]+) ist mir ein Rätsel. DAnk! backstaia_ki
Datum: 19.12.2006-14:36

|
re: Einfaches Regular Expression Problem oder?
|
Seitenanfang |
| Achtung, funktioniert NICHT !!! habs jetzt erst getestet. Mach mal aus Max Nax, dann siehst du das Problem... Weis auch nicht, was mich da vorhin "geritten" hat, aber ich arbeite an einer Lösung... gruß TommyB
Datum: 19.12.2006-15:38

|
re: Einfaches Regular Expression Problem oder?
|
Seitenanfang |
| Hallo nochmal, stimmt es funkt fast perfekt. Also bei meinem Daten Satz ist nur ein Problem Testdaten: MGS4/NNP Rumored/JJ for/IN Xbox/NNP 360/CD Is/VBZ Konami/NNP forcing/VBG Kojima's/NNP hand?/NN Ist nur das Problem das er bei Konami/NNP als Ergebnis VBZ Konami liefert. Problem tritt immer auf wenn ein /VBZ oder/VBG einem /NNP folgt. Seltsam... Aber Danke für die Hilfe! Gruß backstaia_ki
Datum: 19.12.2006-15:55

|
re: Einfaches Regular Expression Problem oder?
|
Seitenanfang |
versuch es mal so
use strict; use warnings;my $file = 'C:\Perl Source\readme.txt'; # Filename zuweisen open(FILE, $file); # File öffnen while(<FILE>) { chomp; my @words = split(/\s+/, $_); for (@words) { print qq($1\n) if (/(\w+)\/NPP$/); } } close(FILE);
Datum: 19.12.2006-16:52

|
re: Einfaches Regular Expression Problem oder?
|
Seitenanfang |
Funktioniert vermutlich auch nicht ganz, da \w z.B. keine Apostrophe (wie in "Kojima's/NNP") erfasst. Könnte man noch hinzufügen, aber hier mein Vorschlag (getestet):use strict; open FILE, "test.txt"; my @words; while(<FILE>) { push @words, /\S+(?=\/NNP)/g; }
print join "\n", @words;
Datum: 22.12.2006-20:57

|