parrent matching

I want to substitude the string

"string/another string/more string/WORLD/more string" to
"http://www.com/WORLD"

the only I know is that WORLD is placed
between 3-rd and 4-th slashes "/"

Thanks
kakoAsked:
Who is Participating?
 
interiotConnect With a Mentor Commented:
s||| is the same as s///, so is the aforementioned line an acceptable solution?

    $str1 =~ s|(?:[^/]*/){3}([^/]*).*|http://www.com/$1|;
0
 
interiotCommented:
I don't quite understand your question, but here's a guess.

    $str1 = "string/another string/more string/WORLD/more string";
    $str2 = "http://www.com/" . (split '/', $str1)[3];

    print "$str2\n";
0
 
kakoAuthor Commented:
Yes, It will work, But I want to do the same
with the substitution command s///;
using pattern matching, I think there should be the
way to do so.
0
 
interiotCommented:
Ahh.  Well, pure s///s would be slow, because it uses backreferences, but anyway:

    $str1 =~ s|(?:[^/]*/){3}([^/]*).*|http://www.com/$1|;

And this is faster, and more readable:

    $str1 =~ s|([^/]*/){3}||;
    $str1 =~ s|/.*||;
    $str1 = "http://www.com/$str1";
0
 
kakoAuthor Commented:
Yes, It will work, But I want to do the same
with the substitution command s///;
using pattern matching, I think there should be the
way to do so.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.