in reply to Regex problem i think?
The following test script based on your sample works as expected. Maybe you can modify it to show the problem you see? Keep it as a stand alone test script though!
use strict; use warnings; my @strings = ( "APPCRASH.", "he protected system file.", "EMET_DLL Module logged the following event:.", "your virus/spyware.", "A new process has been created\..", "A service was installed in the system\..", "A scheduled task was created\..", "Logon Type:[\\W]*(3|10).", "\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run.", "service terminated unexpectedly\..", "service was successfully sent a.", "service entered the.", "service was changed from." ); while (defined (my $info = <DATA>)) { for my $string (@strings) { chomp $info; if ($info =~ /\Q$string\E/) { print "Line # $.: '$string' --> '$info'\n"; } } } __DATA__ APPCRASH. nothing to see here Part sentence: service entered the.
You can avoid the explicit loop over strings by constructing a combined match expression:
use strict; use warnings; my @strings = ( "APPCRASH.", "he protected system file.", "EMET_DLL Module logged the following event:.", "your virus/spyware.", "A new process has been created\..", "A service was installed in the system\..", "A scheduled task was created\..", "Logon Type:[\\W]*(3|10).", "\\\\Software\\\\Microsoft\\\\Windows\\\\CurrentVersion\\\\Run.", "service terminated unexpectedly\..", "service was successfully sent a.", "service entered the.", "service was changed from." ); my $match = join '|', map {qr/\Q$_\E/} @strings; while (defined (my $info = <DATA>)) { chomp $info; next if $info !~ /($match)/; print "Line # $.: '$1' --> '$info'\n"; } __DATA__ APPCRASH. nothing to see here Part sentence: service entered the.
|
|---|
| Replies are listed 'Best First'. | |
|---|---|
|
Re^2: Regex problem i think?
by StalkinYerMa (Initiate) on Sep 10, 2014 at 11:32 UTC | |
by GrandFather (Saint) on Sep 10, 2014 at 21:16 UTC |