J. Doe
J. Doe

Reputation: 687

Only match specific domain

I got the following string:

<a href="/web/20120412083942/http://test.com/contact">Contact Us</a>  |    <a href="/web/20120412083942/https://test.com/privacy-policy">Privacy Policy</a>  <br /><br />
<a href="/web/20120412083942/http://www.cassandracastanedaphoto.com/index2.php#/home/">Photography by Cassandra Castenada</a></span><!-- Start Shareaholic TopSharingBar Automatic --><!-- End Shareaholic TopSharingBar Automatic --><script src="/web/20120412083942js_/http://www.test.com/wp-content/plugins/tweetmeme/button.js" type="text/javascript"></script>
<!-- tracker added by Ultimate Google Analytics plugin v1.6.0: /web/20120412083942/http://www.oratransplant.nl/uga -->

I wanna match:

/web/20120412083942/http://test.com

/web/20120412083942/https://test.com

/web/20120412083942js_/http://www.test.com

Basically any url that has the web/[digit][potential string]/http://test.com

Here's my regex so far:

((http(s)?:\/\/)?web.archive.org)?\/web\/\d+.*?\/http(s)?:\/\/(www\.)?test\.com

The issue is, it matches the entire section:

/web/20120412083942/http://www.cassandracastanedaphoto.com/index2.php#/home/">Photography by Cassandra Castenadahttp://test.com

How can I make it so it stops looking after the domain didn't start with test.com?

Upvotes: 0

Views: 271

Answers (1)

Taha Paksu
Taha Paksu

Reputation: 15616

I succeeded with this regexp pattern:

Pattern: /web/[^/]+/http[s]{0,1}://(|www\.)test\.com/?[._a-zA-Z-0-9]+

Options: ^ and $ match at line breaks

Match the characters “/web/” literally «/web/»
Match any character that is NOT a “/” «[^/]+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
Match the characters “/http” literally «/http»
Match the character “s” «[s]{0,1}»
   Between zero and one times, as many times as possible, giving back as needed (greedy) «{0,1}»
Match the characters “://” literally «://»
Match the regular expression below and capture its match into backreference number 1 «(|www\.)»
   Match either the regular expression below (attempting the next alternative only if this one fails) «»
      Empty alternative effectively makes the group optional (following alternatives will be tried if the regex backtracks into the group) «|»
   Or match regular expression number 2 below (the entire group fails if this one fails to match) «www\.»
      Match the characters “www” literally «www»
      Match the character “.” literally «\.»
Match the characters “test” literally «test»
Match the character “.” literally «\.»
Match the characters “com” literally «com»
Match the character “/” literally «/?»
   Between zero and one times, as many times as possible, giving back as needed (greedy) «?»
Match a single character present in the list below «[._a-zA-Z-0-9]+»
   Between one and unlimited times, as many times as possible, giving back as needed (greedy) «+»
   One of the characters “._” «._»
   A character in the range between “a” and “z” «a-z»
   A character in the range between “A” and “Z” «A-Z»
   The character “-” «-»
   A character in the range between “0” and “9” «0-9»

Upvotes: 1

Related Questions