use strict; while () { next unless /^(?:MS_|TS_|BP_|Dummy_)/; next unless /(?:_0001|_025f|_0001_[[:alnum:]]{4})$/; print +(split '_')[1],"\n"; } __DATA__ MS_11BT801_AQHT801_0001 TS_11BT801_AUBT801_0001 BP_11BT801_C2DT801_0001 BP_11BT801_DNWT801_025f Dummy_11BT801_CPZT801_3h81 MS_C2DT801_PU7T801_0001_678b TS_C2DT801_RAYT801_0001_7d18 BP_CJBT801_NKRT802_0001_a6d8