Martin Robins
Martin Robins

Reputation: 6163

Regular expression to match any empty line or any line starting with a specified character

Given the following input...

;
; comment
; another comment
;

data
data

I am looking for a regular expression that can be used to strip the blank lines and return only the two lines containing the "data" (but leaving the line breaks intact).

Thanks.

Upvotes: 1

Views: 2707

Answers (3)

Bart Kiers
Bart Kiers

Reputation: 170148

Edit

Wait, I think I understand what you mean: you only want to preserve the line breaks after your "data" lines. If so, try:

(?m)^([ \t]*|;.*)(\r?\n|$)

A small explanation:

(?m)          # enable multi-line option
^             # match the beginning of a line
(             # start capture group 1
  [ \t]*      #   match any character from the set {' ', '\t'} and repeat it zero or more times
  |           #   OR
  ;           #   match the character ';'
  .*          #   match any character except line breaks and repeat it zero or more times
)             # end capture group 1
(             # start capture group 2
  \r?         #   match the character '\r' and match it once or none at all
  \n          #   match the character '\n'
  |           #   OR
  $           #   match the end of a line
)             # end capture group 2

Upvotes: 3

Rune FS
Rune FS

Reputation: 21742

"(^;.*$) | (^[\s\t\r\n]*$)"

should match lines starting with a semi colon or empty lines

Upvotes: 1

Max Shawabkeh
Max Shawabkeh

Reputation: 38603

You can replace ^\s*($|;.*) with an empty string to do that.

Upvotes: 1

Related Questions