(1)
is a "greedy quantifier". It will match as much of the string as possible while still allowing the entire regex to match the string.
So the match starts from the "%" character and it matches as many characters as possible to reach the next ":" character. That is the reason the match goes beyond the first ":" character, and goes on till the second (and last) ":" character.
What you are looking for is a "non-greedy quantifier", which is formed by the usual quantifier appended by a "?". That will match as few characters as possible and stop at the first ":" after the "%" character.
Search for "non-greedy quantifier" in the official Perl regex tutorial : perlretut - perldoc.perl.org for a detailed review of this concept.
(2)
You don't need any of the braces
unless you want to store the matched string in special variable
and the part of the string between "%" and ":" in special variable
(3)
"%" and ":" are not special characters, so you don't have to escape them. To see a legitimate list of special characters, search for "metacharacters" in the Perl regex tutorial: perlretut - perldoc.perl.org
Hi All,
I have a file that I need to be able to find a pattern match on one line then parse data on the next or subsequent lines - I will know which line needs to be parsed beforehand.
This is what I currently have:
while (<COMMAND_OUT>) {
if ($_ =~ m/TEST/) {
... (4 Replies)
Hi,
I have got this value 18:21:23.330 in one of my variables.
Now I need to parse this time to something.
And then I have to compare it with 2 times, let's say, 15:00 hrs to 23:00 hrs.
Can Date::Manip rescue me from this horrifying situation?
I am quite new to Perl and especially this... (1 Reply)
Hi all,
I have output of paction command looking like this:
RELCI 0 IP address 1.2.16.3
Xmit: CURRENT Recv: WAIT_HEADER 0 congestions 2617/0 buf. sent/rec
Xmit: CURRENT Recv: WAIT_HEADER 0 congestions 0/0 buf. sent/rec
BUFFER Xmit: ... (6 Replies)
hi
i have a file p1.htm
<div class="colorID2">
aaaa aaaa aa <br/>
bbbbbbbb bbb<br/>
<br/>cccc ccc ccc
</div><div class="colorID1">
dddd d ddddd<br/>
eeee eeee eeeeeeeeee<br/>
fffff
<br/>g gg<br/> (5 Replies)
Hi,
I would like to be able to parse out a substring matching a basic pattern, which is a character followed by 3 or 4 digits (for example S1234 out of a larger string). The main string would just be a filename, like Thisis__the FileName_S1234_ToParse.txt. The filename isn't fixed, but the... (2 Replies)
Guys , please help me out with another AWK solution ...
Input
Device Physical Name : Not Visible
Device Symmetrix Name : 0743
Front Director Paths (2):
{
----------------------------------------------------------------------
... (5 Replies)
Experts and Informed folks,
Need some help here in parsing the log file.
1389675 Opera_ShirtCatalog INSERT INTO Opera_ShirtCatalog(COL1, COL2) VALUES (1, 'TEST1'), (2,'TEST2');
1389685 Opera_ShirtCatlog_Wom INSERT INTO Opera_ShirtCatlog_Wom(col1, col2, col3) VALUES (9,'Siz12, FormFit',... (12 Replies)
Hi Perl Guys
I have another perl question
I have the following code that i have written
Getopt::Long::config(qw( permute bundling ));
my $OPT = {};
GetOptions($OPT, qw(
ver=s
help|h
)) or die "options parsing failed";
This will allow the user to do something like... (4 Replies)
Hi Friends,
I have data like below
t064266
I want output into this format
t064266
Data are space delimited and i want parse third column data.
Thanks (9 Replies)
Discussion started by: Jagaat
9 Replies
LEARN ABOUT X11R4
perlrequick
PERLREQUICK(1) Perl Programmers Reference Guide PERLREQUICK(1)NAME
perlrequick - Perl regular expressions quick start
DESCRIPTION
This page covers the very basics of understanding, creating and using regular expressions ('regexes') in Perl.
The Guide
Simple word matching
The simplest regex is simply a word, or more generally, a string of characters. A regex consisting of a word matches any string that con-
tains that word:
"Hello World" =~ /World/; # matches
In this statement, "World" is a regex and the "//" enclosing "/World/" tells perl to search a string for a match. The operator "=~" asso-
ciates the string with the regex match and produces a true value if the regex matched, or false if the regex did not match. In our case,
"World" matches the second word in "Hello World", so the expression is true. This idea has several variations.
Expressions like this are useful in conditionals:
print "It matches
" if "Hello World" =~ /World/;
The sense of the match can be reversed by using "!~" operator:
print "It doesn't match
" if "Hello World" !~ /World/;
The literal string in the regex can be replaced by a variable:
$greeting = "World";
print "It matches
" if "Hello World" =~ /$greeting/;
If you're matching against $_, the "$_ =~" part can be omitted:
$_ = "Hello World";
print "It matches
" if /World/;
Finally, the "//" default delimiters for a match can be changed to arbitrary delimiters by putting an 'm' out front:
"Hello World" =~ m!World!; # matches, delimited by '!'
"Hello World" =~ m{World}; # matches, note the matching '{}'
"/usr/bin/perl" =~ m"/perl"; # matches after '/usr/bin',
# '/' becomes an ordinary char
Regexes must match a part of the string exactly in order for the statement to be true:
"Hello World" =~ /world/; # doesn't match, case sensitive
"Hello World" =~ /o W/; # matches, ' ' is an ordinary char
"Hello World" =~ /World /; # doesn't match, no ' ' at end
perl will always match at the earliest possible point in the string:
"Hello World" =~ /o/; # matches 'o' in 'Hello'
"That hat is red" =~ /hat/; # matches 'hat' in 'That'
Not all characters can be used 'as is' in a match. Some characters, called metacharacters, are reserved for use in regex notation. The
metacharacters are
{}[]()^$.|*+?
A metacharacter can be matched by putting a backslash before it:
"2+2=4" =~ /2+2/; # doesn't match, + is a metacharacter
"2+2=4" =~ /2+2/; # matches, + is treated like an ordinary +
'C:WIN32' =~ /C:\WIN/; # matches
"/usr/bin/perl" =~ //usr/bin/perl/; # matches
In the last regex, the forward slash '/' is also backslashed, because it is used to delimit the regex.
Non-printable ASCII characters are represented by escape sequences. Common examples are " " for a tab, "
" for a newline, and "
" for a
carriage return. Arbitrary bytes are represented by octal escape sequences, e.g., "