All this and more is available at http://perldoc.perl.org/perlre.html
On 27 April 2010 12:39, Erez Schatz <moonb...@gmail.com> wrote: > You need to specify that the string you look for should not appear in > the part you try to extract, meaning instead of .*? you should be > looking for (not abc)*? In perl, we have the negative lookahed for > that: (?!...): m/abc((.(?!abc))*?)xyz/ > > However, this would fail if you have a string abc abcabc toto toto... > because it's a "zero-length" test and therefore it would check the > first character after the abc abc and see that it's 1: a, and 2: is > followed by a "bc " which is OK. So we need to place the negative > lookahead on both sides of the character: > m/abc(((?!abc).(?!abc))*?)xyz/ > > Not a very nice looking regex, but does the trick: > > $st = "abc abcabc toto toto xyz xyz xyz"; > print $1 if $st =~ m/abc(((?!abc).(?!abc))*?)xyz/ > > PS C:\> perl .\test.pl > toto toto > > > On 27 April 2010 10:52, HolyNoob <nhagiaubungbu2...@gmail.com> wrote: >> Hi, >> >> I'm trying to make a regexp to match the last appearance of a word (lets say >> 'abc') until the first appearance of another word (for ex: 'xyz'), and I >> still cannot do it. >> >> For example: with a string like this "abc abc abc toto toto xyz xyz xyz" , >> which regexp I have to use to get "abc toto toto xyz". >> I can extract this "abc abc abc toto toto xyz" with m/abc(.*?)xyz/ >> but still got a problem to have exactly what I need. >> >> Would you guys please help me? >> >> Thank you very much >> > > > > -- > Erez > > Support the New Israeli Fund - http://www.nif.org/ > -- Erez Support the New Israeli Fund - http://www.nif.org/ -- To unsubscribe, e-mail: beginners-unsubscr...@perl.org For additional commands, e-mail: beginners-h...@perl.org http://learn.perl.org/