Regular expressions - finding and comparing the first instance of a word

Posted by Dan on Stack Overflow See other posts from Stack Overflow or by Dan
Published on 2010-05-28T13:59:30Z Indexed on 2010/05/28 14:02 UTC
Read the original article Hit count: 302

Filed under:
|

Hi there,

I am currently trying to write a regular expression to pull links out of a page I have. The problem is the links need to be pulled out only if the links have 'stock' for example. This is an outline of what I have code wise:

<td class="prd-details">
   <a href="somepage">
   ...
   <span class="collect unavailable">
</td>

<td class="prd-details">
   <a href="somepage">
   ...
   <span class="collect available">
</td>

What I would like to do is pull out the links only if 'collect available' is in the tag. I have tried to do this with the regular expression:

(?s)prd-details[^=]+="([^"]+)" .+?collect{1}[^\s]+ available

However on running it, it will find the first 'prd-details' class and keep going until it finds 'collect available', thereby taking the incorrect results. I thought by specifying the {1} after the word collect it would only use the first instance of the word it finds, but apparently I'm wrong. I've been trying to use different things such as positive and negative lookaheads but I cant seem to get anything to work.

Might anyone be able to help me with this issue?

Thanks,

Dan

© Stack Overflow or respective owner

Related posts about html

Related posts about regular-language