Re: [rt-users] Regex in scrip won't match multi-line strings
On Fri, Mar 3, 2017 at 9:30 AM, Peter Nikolaidiswrote: > Apparently I'm still doing something wrong and regex is kicking my butt. > > Sample message body: > - > * Stopping Asterisk PBX: asterisk > ...done. > * Starting Asterisk PBX: asterisk > ...done. > - > > Patterns I've tried: > - > 1: > (($self->TicketObj->Subject =~ /Cron \ \/etc\/init\.d\/asterisk > restart/) && # Successful cron jobs. > ($self->TicketObj->Body =~ /\* Starting Asterisk PBX\: > asterisk\n\.\.\.done\./m) > > 2: > (($self->TicketObj->Subject =~ /Cron \ \/etc\/init\.d\/asterisk > restart/) && # Successful cron jobs. > ($self->TicketObj->Body =~ /\* Starting Asterisk PBX\: > asterisk.*\.\.\.done\./ms)) > 3: > (($self->TicketObj->Subject =~ /Cron \ \/etc\/init\.d\/asterisk > restart/) && # Successful cron jobs. > ($self->TicketObj->Body =~ /^\* Starting Asterisk PBX\: > asterisk.*\.\.\.done\.$/ms)) || > - > > Any ideas? #!/usr/bin/perl use strict; use warnings; my $sample_message_body = <
Re: [rt-users] Regex in scrip won't match multi-line strings
Apparently I'm still doing something wrong and regex is kicking my butt. Sample message body: - * Stopping Asterisk PBX: asterisk ...done. * Starting Asterisk PBX: asterisk ...done. - Patterns I've tried: - 1: (($self->TicketObj->Subject =~ /Cron \\/etc\/init\.d\/asterisk restart/) && # Successful cron jobs. ($self->TicketObj->Body =~ /\* Starting Asterisk PBX\: asterisk\n\.\.\.done\./m) 2: (($self->TicketObj->Subject =~ /Cron \ \/etc\/init\.d\/asterisk restart/) && # Successful cron jobs. ($self->TicketObj->Body =~ /\* Starting Asterisk PBX\: asterisk.*\.\.\.done\./ms)) 3: (($self->TicketObj->Subject =~ /Cron \ \/etc\/init\.d\/asterisk restart/) && # Successful cron jobs. ($self->TicketObj->Body =~ /^\* Starting Asterisk PBX\: asterisk.*\.\.\.done\.$/ms)) || - Any ideas? Thanks, Peter On Mon, Feb 27, 2017 at 10:57 AM, Matt Zagrabelny wrote: > On Mon, Feb 27, 2017 at 9:48 AM, Peter Nikolaidis > wrote: > > Hi all, > > > > I'm trying to automatically resolve tickets that don't require any > action. > > In this example, I receive a backup notification. I know it's a backup > > script result email based on the subject, and I know the backup was > > successful (and therefore I can auto-resolve the ticket) if another regex > > matches the body. When I match against the subject line alone, it works. > > However, when I try to match against the mutli-line body, it never > matches > > (even though when I run the regex against the string in a test, it > matches > > as expected). > > > > Are multi-line matches not an option, or do I need to test in another > way? > > From: > > http://perldoc.perl.org/perlre.html > > """ > Modifier m > > Treat the string as multiple lines. That is, change "^" and "$" from > matching the start of the string's first line and the end of its last > line to matching the start and end of each line within the string. > """ > I almost always use /xms for my REs. This allows for significant > readability - at the cost of significant number of lines. Check out > Damian Conway's "Perl Best Practices" Regular Expression chapter. > > -m > - RT 4.4 and RTIR Training Sessions https://bestpractical.com/training * Paris - April 24-26, 2017
Re: [rt-users] Regex in scrip won't match multi-line strings
On Mon, Feb 27, 2017 at 9:48 AM, Peter Nikolaidiswrote: > Hi all, > > I'm trying to automatically resolve tickets that don't require any action. > In this example, I receive a backup notification. I know it's a backup > script result email based on the subject, and I know the backup was > successful (and therefore I can auto-resolve the ticket) if another regex > matches the body. When I match against the subject line alone, it works. > However, when I try to match against the mutli-line body, it never matches > (even though when I run the regex against the string in a test, it matches > as expected). > > Are multi-line matches not an option, or do I need to test in another way? From: http://perldoc.perl.org/perlre.html """ Modifier m Treat the string as multiple lines. That is, change "^" and "$" from matching the start of the string's first line and the end of its last line to matching the start and end of each line within the string. """ I almost always use /xms for my REs. This allows for significant readability - at the cost of significant number of lines. Check out Damian Conway's "Perl Best Practices" Regular Expression chapter. -m