++stevieb for helpful suggestions. Also, Anonymous Monk makes a good point that a list of test cases would be very helpful. That is, the code that stevieb posted works for the cases that you have mentioned in your post and replies...but it may fail on other cases that you have failed to mention here.

This is a case where the YAPE::Regex::Explain module can be helpful (see item 9 in Basic debugging checklist).

Here is the YAPE::Regex::Explain output for your original regex:
The regular expression: (?-imsx:^https?://(?!www\.)robidu\.de/) 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): ---------------------------------------------------------------------- ^ the beginning of the string ---------------------------------------------------------------------- http 'http' ---------------------------------------------------------------------- s? 's' (optional (matching the most amount possible)) ---------------------------------------------------------------------- :// '://' ---------------------------------------------------------------------- (?! look ahead to see if there is not: ---------------------------------------------------------------------- www 'www' ---------------------------------------------------------------------- \. '.' ---------------------------------------------------------------------- ) end of look-ahead ---------------------------------------------------------------------- robidu 'robidu' ---------------------------------------------------------------------- \. '.' ---------------------------------------------------------------------- de/ 'de/' ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------
Here is the YAPE::Regex::Explain output for stevieb's regex:
The regular expression: (?-imsx:^https?://.*?\.?(?<!www\.)robidu\.de/) 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): ---------------------------------------------------------------------- ^ the beginning of the string ---------------------------------------------------------------------- http 'http' ---------------------------------------------------------------------- s? 's' (optional (matching the most amount possible)) ---------------------------------------------------------------------- :// '://' ---------------------------------------------------------------------- .*? any character except \n (0 or more times (matching the least amount possible)) ---------------------------------------------------------------------- \.? '.' (optional (matching the most amount possible)) ---------------------------------------------------------------------- (?<! look behind to see if there is not: ---------------------------------------------------------------------- www 'www' ---------------------------------------------------------------------- \. '.' ---------------------------------------------------------------------- ) end of look-behind ---------------------------------------------------------------------- robidu 'robidu' ---------------------------------------------------------------------- \. '.' ---------------------------------------------------------------------- de/ 'de/' ---------------------------------------------------------------------- ) end of grouping ----------------------------------------------------------------------

In reply to Re: regexp: Mind-boggling negative assertions... by kevbot
in thread regexp: Mind-boggling negative assertions... by Robidu

Title:
Use:  <p> text here (a paragraph) </p>
and:  <code> code here </code>
to format your post, it's "PerlMonks-approved HTML":



  • Posts are HTML formatted. Put <p> </p> tags around your paragraphs. Put <code> </code> tags around your code and data!
  • Titles consisting of a single word are discouraged, and in most cases are disallowed outright.
  • Read Where should I post X? if you're not absolutely sure you're posting in the right place.
  • Please read these before you post! —
  • Posts may use any of the Perl Monks Approved HTML tags:
    a, abbr, b, big, blockquote, br, caption, center, col, colgroup, dd, del, details, div, dl, dt, em, font, h1, h2, h3, h4, h5, h6, hr, i, ins, li, ol, p, pre, readmore, small, span, spoiler, strike, strong, sub, summary, sup, table, tbody, td, tfoot, th, thead, tr, tt, u, ul, wbr
  • You may need to use entities for some characters, as follows. (Exception: Within code tags, you can put the characters literally.)
            For:     Use:
    & &amp;
    < &lt;
    > &gt;
    [ &#91;
    ] &#93;
  • Link using PerlMonks shortcuts! What shortcuts can I use for linking?
  • See Writeup Formatting Tips and other pages linked from there for more info.