On Jul 29, KEVIN ZEMBOWER said:

>I'm facing what I believe to one of the classic text manipulation
>problems, transforming a document which was typed with a hard return at
>the end of every physical line, and two consecutive newlines to mark the
>end of a paragraph.
>
>Would anyone help me write a program which would transform these
>documents? I'm trying to find all instances of a single newline, and
>remove it, either inserting or removing space characters around where it
>was to leave just one space between what was the two lines. I also need
>to substitute a single newline for two or more consecutive newlines,
>whether or not they're separated by whitespace characters.

It's not too difficult.  I'm using [^\S\n] to match whitespace EXCEPT
newline.

  $text =~ s{
    (             # capture to $1
      [^\S\n]*    # any non-newline whitespace
      (?:         # this chunk...
        \n          # a newline
        [^\S\n]*    # any non-newline whitespace
      )+          # one or more times
    )             # end $1
  }{
    my $ws = $1;
    if (($ws =~ tr/\n//) == 1) { " " }
    else { "\n" }
  }gex;

The code to replace the whitespace says "if there's only ONE newline,
replace the whitespace with a space; otherwise, replace it with a
newline."

-- 
Jeff "japhy" Pinyan      [EMAIL PROTECTED]      http://www.pobox.com/~japhy/
RPI Acacia brother #734   http://www.perlmonks.org/   http://www.cpan.org/
** Look for "Regular Expressions in Perl" published by Manning, in 2002 **
<stu> what does y/// stand for?  <tenderpuss> why, yansliterate of course.
[  I'm looking for programming work.  If you like my work, let me know.  ]


-- 
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to