in reply to Remove blank lines from REGEX output

If I'm understanding the specs in a comment and your regex, perhaps the following will be helpful:

use strict; use warnings; # Remove (exclude) lines beginning with "bl", "BL" or "_" and releases + with a label with xx.yy.zzz.nnn(n) while (<DATA>) { print unless /^(?:bl|_)|\.\d{3}\.\d{3,}$/i; } __DATA__ _STUDYABCD1234_1.00 _STUDYABCD1234_1.00.5678 STUDYABCD1234_1.00 STUDYABCD1234_1.00.000 p_STUDYABCD1234_1.00.000 p_STUDYABCD1234_1.00.000.5678 bl_STUDYABCD1234_1.00.000 bl_STUDYABCD1234_1.00.000.5678 BL_STUDYABCD1234_1.00.000 BL_STUDYABCD1234_1.00.000.5678

Output:

STUDYABCD1234_1.00 STUDYABCD1234_1.00.000 p_STUDYABCD1234_1.00.000

The regex:

/^(?:bl|_)|\.\d{3}\.\d{3,}$/i ^ ^ ^ ^ ^ ^ ^ ^ ^ | | | | | | | | | | | | | | | | | + - Case-insensitive | | | | | | | + - From the end of the string | | | | | | + - Three or more digits | | | | | + - A decimal point | | | | + - Three digits | | | + - A decimal point | | + - OR | + - Match either "bl" or "_" + - From the beginning of the string

The script just skips (excludes) those lines that you don't want, instead of making them blank.

Replies are listed 'Best First'.
Re^2: Remove blank lines from REGEX output
by Deep_Plaid (Acolyte) on Feb 05, 2014 at 21:08 UTC

    Thanks for your fast and thoughtful reply, Kenosis. I really appreciate the way you broke down the regex line with an explanation - it was very helpful. I've added this code and it's working. I'm still not quite sure why my original attempts didn't work - I couldn't get them to work without .*, thinking I needed a wildcard to account for the rest of the string, but it makes sense that this approach was leaving in /n. Thanks again.

      You're most welcome, Deep_Plaid! Am glad it worked for you.