Brother haukex has already replied, but here's my answer, which more or less does the same thing:
The $/ variable is the one that tells Perl what the 'end of line' character is. When I undef that variable, the whole file gets treated as a single line from an input point of view when I read the text into that variable.#!perl use strict; use warnings; { # Disable the line ending magic, and slurp the entire string into # a scalar. undef $/; my $data = <DATA>; # If we see some text between 'Test:' and 'Test2:' while looking # at a multi-line string, display the resulting capture. if ( $data =~ /Test:(.+)Test2:/s ) { print "Found |$1| between titles.\n" } } __DATA__ Test: Blah blah blah 1 Blah blah blah 2 Blah blah blah 5 Blah blah blah 9 Test2: What is this for? How is this happning? Why am I here? Hello3: What
The 's' option defines the regexp as a multi-line regexp, telling it to ignore the carriage return (\r) and line feed (\n) characters. When this script is run, I get
Found | Blah blah blah 1 Blah blah blah 2 Blah blah blah 5 Blah blah blah 9 | between titles.
That's one way of parsing the file -- another way would be to
In reply to Re: Regex get Text between two strings with colon
by talexb
in thread Regex get Text between two strings with colon
by MurciaNew
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |