#!/usr/bin/perl -w
use strict;
$_ = 'childhe.com/pas/ apstpldr.dll.html? affid=177194&uid=& guid=4E83
+C7975FCD4 4B091226646F461D89 1/pas/apstpldr.dll .html?affid=177194 &u
+id=&guid= 4E83C7975FCD44B091 226646F461D89';
s/\?.*?(?=\/|$)//g;
print;
which outputs:
childhe.com/pas/ apstpldr.dll.html/pas/apstpldr.dll .html
YAPE::Regex::Explain interprets this regular expression as:
The regular expression:
(?-imsx:\?.*?(?=/|$))
matches as follows:
NODE EXPLANATION
----------------------------------------------------------------------
(?-imsx: group, but do not capture (case-sensitive)
(with ^ and $ matching normally) (with . not
matching \n) (matching whitespace and #
normally):
----------------------------------------------------------------------
\? '?'
----------------------------------------------------------------------
.*? any character except \n (0 or more times
(matching the least amount possible))
----------------------------------------------------------------------
(?= look ahead to see if there is:
----------------------------------------------------------------------
/ '/'
----------------------------------------------------------------------
| OR
----------------------------------------------------------------------
$ before an optional \n, and the end of
the string
----------------------------------------------------------------------
) end of look-ahead
----------------------------------------------------------------------
) end of grouping
----------------------------------------------------------------------
See perlretut for more information on regular expressions. |