2011-05-04 2 views
1

Из-за отсутствия API-интерфейса redbubble.com я использую фид ATOM, чтобы украсть информацию о изображениях пользователя.Regex, чтобы получить URL-адрес, содержащий ключевое слово

Это то, что XML выглядит следующим образом:

<entry> 
    <id>ID</id> 
    <published>Date Published</published> 
    <updated>Date Updated</updated> 
    <link type="text/html" rel="alternate" href="http://www.redbubble.com/link/to/post"/> 
    <title>Title</title> 
    <content type="html"> 
    Blah blah blah stuff about the image.. 
    &lt;a href="http://www.redbubble.com/products/configure/config-id"&gt;&lt;img src="http://ih1.redbubble.net/path-to-image" alt="" /&gt; 
    </content> 
    <author> 
    <name>Author Name</name> 
    <uri>http://www.redbubble.com/people/author-user-name</uri> 
    </author> 
    <link type="image/jpeg" rel="enclosure" href="http://ih0.redbubble.net/path-to-the-original-image"/> 
    <category term="1"/> 
    <category term="2"/> 
</entry> 

В основном с помощью регулярных выражений ... как бы я идти о получении href собственности в ссылке в теге контента?

Одно мы знаем наверняка, это будет всегда настроить на пути т.е. http://somesite.com/**configure**/id

Так в основном я просто нужно найти URL с конфигурированием в и захватить все это ...

+0

Что программирования? –

ответ

1

Спасибо за ваши замечательные ответы, но мой коллега решил это для меня!

Это то, что я в конечном итоге с помощью:

/http:\/\/([^"\/]*\/)*configure\/([^"]*)/ 

(Ruby, регулярное выражение, кстати) язык

1

Безотносительно язык программирования, который вы используете, не пытайтесь разобрать все это с помощью регулярного выражения. Сначала используйте анализатор XML, чтобы извлечь href="...". Затем, конечно, используйте регулярное выражение, чтобы убедиться, что URL-адрес содержит configure.

Как @KARASZI прокомментировал, XPath - еще один хороший подход.

+1

даже лучше использовать XPath. –

+0

Сначала проанализируйте XML, если производительность действительно является проблемой. В противном случае просто перейдите к регулярному выражению - гораздо проще кодировать ... – Elad

2

Следующее регулярное выражение будет извлекать содержимое href в соответствии с вашими требованиями. Кажется, что работает для образца кода.

href="(\w[^"]+/configure/\w[^"]+) 
+0

Почему бы не использовать lookaheads/lookbehinds? – Ishpeck

+0

@ishpeck - Я считаю, что это может быть более эффективный поиск в регулярном выражении. – Leons

+0

'\ w' не нужны – stema

1

Если вы должны использовать регулярное выражение попробуйте это один:

href="(?=[^"]*configure)([^"]*) 

rubular.com

Я использую предпросмотр, чтобы найти, если он содержит конфигурации.

Смежные вопросы