Solved

A doubt in regex

Posted on 2011-09-07
16
261 Views
Last Modified: 2012-05-12
my requirement:
 $archive =~ /Merry\.Rolls\.(GR\d+\.\d+.\d+)\.(\w+).tgz/;

$archive can be:
Merry.Rolls.SR2.1.0.07Sep11_082115.tgz
OR
Merry.Rolls.GR2.1.0.07Sep11_082115.D.tgz

The second one fails. What shpuld be my regex?
The D in the second one can be any other letter.
0
Comment
Question by:pvinodp
  • 5
  • 4
  • 3
  • +3
16 Comments
 
LVL 23

Expert Comment

by:Kamaraj Subramanian
ID: 36494772
$archive =~ /Merry\.Rolls\.([GS]R\d+\.\d+.\d+)\.(\w+).tgz/;

Open in new window

0
 

Author Comment

by:pvinodp
ID: 36494795
Sorry that was a typo:
$archive can be:
Merry.Rolls.GR2.1.0.07Sep11_082115.tgz
OR
Merry.Rolls.GR2.1.0.07Sep11_082115.D.tgz
0
 

Author Comment

by:pvinodp
ID: 36494807
basically what i want is how to write a regex which could either be \w followed by a . or nothing..

ie:
mytext.D.tgz OR mytext.tgz
0
 
LVL 84

Accepted Solution

by:
ozo earned 200 total points
ID: 36494822
/Merry\.Rolls\.(GR\d+\.\d+.\d+)\.(\w+(?:\.D)?).tgz/;
0
 

Author Comment

by:pvinodp
ID: 36494914
what is the meaning of (?:\D)?  
0
 
LVL 75

Assisted Solution

by:käµfm³d 👽
käµfm³d   👽 earned 150 total points
ID: 36495196
(?:\D)
That means:

(?: ... )    Non-capturing group
\D           Any character NOT a digit

Open in new window


However, ozo's pattern is actually:

(?:\.D)

Open in new window


which means:

(?: ... )    Non-capturing group
\.           Literal period
D            Literal "D"

Open in new window


Notice the difference a character can make! The question mark following the non-capturing group makes the whole group optional (i.e. 0 or 1 occurrences).
0
 
LVL 63

Assisted Solution

by:Zvonko
Zvonko earned 100 total points
ID: 36497873
Check this:
$archive =~ /Merry\.Rolls\.(GR\d+\.\d+.\d+)\.(\w+)(\.D)?.tgz/;

Open in new window

That will allow optional .D
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36498217
@Zvonko
That is identical to what ozo already posted ( http:#36494822 ), save a difference in grouping. There is no functional difference between your pattern and ozo's pattern   : \
0
Ransomware-A Revenue Bonanza for Service Providers

Ransomware – malware that gets on your customers’ computers, encrypts their data, and extorts a hefty ransom for the decryption keys – is a surging new threat.  The purpose of this eBook is to educate the reader about ransomware attacks.

 
LVL 63

Expert Comment

by:Zvonko
ID: 36498353
I see a difference.
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36498752
How enlightening...
0
 
LVL 63

Expert Comment

by:Zvonko
ID: 36498819
Sorry, I withdrow my comment http:#36497873

I posted it mainly to show how the lookahead pattern can be avoided.

But first of all Perl understands lookahead and second I just tested it also in IE browser and now even IE understands lookahead patterns in RegExp Objects.
So there is no reason for avoiding it.


0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36498863
Where do you see a lookahead?
0
 
LVL 84

Expert Comment

by:ozo
ID: 36498886
the original question does not specify what captures are desired in the case of Merry.Rolls.GR2.1.0.07Sep11_082115.D.tgz
it may be that
/Merry\.Rolls\.(GR\d+\.\d+.\d+)\.(\w+)(\.D)?.tgz/
would be preferable
0
 
LVL 35

Assisted Solution

by:Terry Woods
Terry Woods earned 50 total points
ID: 36500478
Zvonko, I think you confused the ?: in (?:\.D)? for a lookahead. Actually, the ?: just makes the group into a non-capturing group.
0
 
LVL 75

Expert Comment

by:käµfm³d 👽
ID: 36502369
Awww...   Terry, you spoiled the surprise  8-P
0
 

Author Closing Comment

by:pvinodp
ID: 36535576
thanks all
0

Featured Post

U.S. Department of Agriculture and Acronis Access

With the new era of mobile computing, smartphones and tablets, wireless communications and cloud services, the USDA sought to take advantage of a mobilized workforce and the blurring lines between personal and corporate computing resources.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

Title # Comments Views Activity
Regex code:separate email:ip from email:pass ? 6 47
nagios remote hosts 9 46
Can't See Site After DNS Resolved 7 47
Linux hostname change 2 56
Using 'screen' for session sharing, The Simple Edition Step 1: user starts session with command: screen Step 2: other user (logged in with same user account) connects with command: screen -x Done. Both users are connected to the same CLI sessio…
Little introduction about CP: CP is a command on linux that use to copy files and folder from one location to another location. Example usage of CP as follow: cp /myfoder /pathto/destination/folder/ cp abc.tar.gz /pathto/destination/folder/ab…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…

863 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

22 Experts available now in Live!

Get 1:1 Help Now