Solved

Need help with regex?

Posted on 2002-04-30
17
121 Views
Last Modified: 2010-03-05
how do i search for a string that -
"/net/vol01/shot/curtest.../2fa.ca"

and I need to print everything from "/shot... " onwords...
so that
$FILE = /shot/cuetest/wrappers/pix/out/wrappers-2/2fa

Any suggestions....

Thanks
0
Comment
Question by:sdesar
17 Comments
 
LVL 1

Expert Comment

by:bluprint
ID: 6981881
assuming:
$FILE = "/net/vol01/shot/curtest.../2fa.ca"


then:
$FILE =~ s{/net/vol01(.*)}{$1};

or

$FILE =~ s{(/shot/.*)}{$1};

##############################################

or assuming:
$MY_VAR = "/net/vol01/shot/curtest.../2fa.ca"

then:
$MY_VAR =~ m{/net/vol01(.*)};
$FILE = $1;

or

$MY_VAR =~ m{(/shot/.*)};
$FILE = $1;

0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 6982083
s#/net/vol01(.*)#$1#;
# or
s#(/[^/]*){1,2}(.*)#$2#;
0
 

Author Comment

by:sdesar
ID: 6991499
ed help with one more regex-


my $pwd = $ENV{PWD};


$pwd = /shot/cuetest/wrappers/pix/out/wrappers_test_v3/2fa


I need to ge the word 'test'  its always gain to be between

the two underscores ie  '_'.


Thanks
0
 

Author Comment

by:sdesar
ID: 6991505
BTW ..the word 'test' is between '_' and '_v'

0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 6991735
s#.*_(test)_v.*#$1#;
0
 

Author Comment

by:sdesar
ID: 6991783
but, the word 'test will keep changing evertime the user types pwd on a different machine so
I need the ability to recognize the word between a '_' and '_v'

Awaiting more suggestions..

Thanks
0
 
LVL 51

Expert Comment

by:ahoffmann
ID: 6991876
.. what's wrong with my suggestion?
0
 

Author Comment

by:sdesar
ID: 6991885
the word test is in brackets... doesn't that mean it looks for test?
0
Highfive Gives IT Their Time Back

Highfive is so simple that setting up every meeting room takes just minutes and every employee will be able to start or join a call from any room with ease. Never be called into a meeting just to get it started again. This is how video conferencing should work!

 

Author Comment

by:sdesar
ID: 6991912
#!/usr/local/bin/perl
      2
      3 use strict;
      4
      5  my $pwd = $ENV{PWD};
      6
      7  print "file is : $pwd \n";

         # pwd is - /shot/cuetest/wrappers/pix/out/wrappers_test_v3/2fa.cin
      8
      9
     10
     11 my $take =~ s#.*_(test)_v.#$1#;
     12
     13  while ($pwd = <>) {
     14
     15    if ($pwd = ~/$take/o) {  print "Take : $pwd \n"; }
     16
     17  }
     18
     19

Is this the right way to do it?
0
 

Author Comment

by:sdesar
ID: 6991916
Seems like 'test' is hard coded.. but its going to change on different machines.
the word test is in brackets... doesn't that mean it looks for test?
0
 
LVL 51

Accepted Solution

by:
ahoffmann earned 50 total points
ID: 6991918
s#.*_([^_]*)_v.*#$1#;
0
 

Author Comment

by:sdesar
ID: 6992301

#!/usr/local/bin/perl
      2
      3 use strict;
      4
      5  my $pwd = $ENV{PWD};
      6
      7  print "file is : $pwd \n";

         # pwd is - /shot/cuetest/wrappers/pix/out/wrappers_test_v3/2fa.cin
      8
        my $newtake;
      9
     10
     11 my $take =~ s#.*_([^_]*)_v.*#$1#;
     12
     13  while ($pwd = <>) {
     14
     15    if ($pwd = ~/$take/o) {  print "Take : $pwd \n"; }
     16
     17  }
     18
         print "Take : $newtake \n";
     19
     
     24
     25  exit;

I need to be able to get the file name from $pwd
get the take from $take =~ s#.*_([^_]*)_v.*#$1#;

And store the result in $newtake.

Here's the code that I currently have.  But, its just printing Take: 4294898770  .. some wierd numbers rather than printing 'test'.


Thanks for all your help.

Awaiting suggestions
0
 
LVL 84

Expert Comment

by:ozo
ID: 6992478
$pwd = ~/$take/o
should be
$pwd =~ /$take/o
0
 

Author Comment

by:sdesar
ID: 6992493
Thanks.. I modified it to $pwd =~ /$take/o  , but now it prints no data ie Take :

more suggestions
0
 

Author Comment

by:sdesar
ID: 6992582
Thanks ozo and  ahoffmann .. I figured out my probelm.

Fixed it!

It works great!
0
 

Author Comment

by:sdesar
ID: 6992583
Thanks.

here are your points!
0
 

Author Comment

by:sdesar
ID: 6999206
One more regex I need help with..

Here's the file -
wrapper_cmp_v2_2kfa_lg8.1-10#.cla

I need to look for '1-10'
The number 1-10 will vary but its always going to be after the . and have a # after it.

Any suggestions.

0

Featured Post

What Should I Do With This Threat Intelligence?

Are you wondering if you actually need threat intelligence? The answer is yes. We explain the basics for creating useful threat intelligence.

Join & Write a Comment

I have been pestered over the years to produce and distribute regular data extracts, and often the request have explicitly requested the data be emailed as an Excel attachement; specifically Excel, as it appears: CSV files confuse (no Red or Green h…
In the distant past (last year) I hacked together a little toy that would allow a couple of Manager types to query, preview, and extract data from a number of MongoDB instances, to their tool of choice: Excel (http://dilbert.com/strips/comic/2007-08…
Explain concepts important to validation of email addresses with regular expressions. Applies to most languages/tools that uses regular expressions. Consider email address RFCs: Look at HTML5 form input element (with type=email) regex pattern: T…
This video shows how to remove a single email address from the Outlook 2010 Auto Suggestion memory. NOTE: For Outlook 2016 and 2013 perform the exact same steps. Open a new email: Click the New email button in Outlook. Start typing the address: …

744 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

13 Experts available now in Live!

Get 1:1 Help Now