#!/usr/bin/perl # http://perlmonks.org/?node_id=1196747 use strict; use warnings; use Data::Dump 'pp'; while() { /RepeatingGroup\s*=\s* (?\b\S+\b)\s* (?=.*(?\bFlatten\b))? (?=.*(?\b(in|out)\b))? /x or next; print; pp \%+; } __DATA__ RepeatingGroup = Waiver, Flatten, out RepeatingGroup = Waiver, out RepeatingGroup = Waiver, out, Flatten RepeatingGroup = Waiver , in RepeatingGroup = Waiver , Flatten