Regex для извлечения ссылок с указанными атрибутами - PullRequest
0 голосов
/ 01 апреля 2011

Я пытаюсь построить регулярное выражение для извлечения ссылок из текста, которые не имеют rel = "nofollow" .

Пример:

aiusdiua asudauih <a rel="nofollow" hre="http://uashiuadha.asudh/adas>adsaag</a> uhwaida <br> asdgydug <a href="http://asdha.sda/uduih/dufhuis>aguuia</a>

Спасибо!

Ответы [ 2 ]

2 голосов
/ 01 апреля 2011

Следующее регулярное выражение выполнит работу:

<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"

Разыскиваемые URL будут в группе захвата # 1. Например. в Ruby это будет:

if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
    match = $~[1]
end

Так как он принимает [^>]*? до rel в негативном прогнозе , href или что-либо еще, может предшествовать rel. Если href придет после rel, конечно, все будет в порядке.

0 голосов
/ 01 апреля 2011

Попробуйте это <(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"]([^>"]*)[^>]*?>

, если вы используете .net regex, тогда

<(?:A|AREA)\b[^<>]*?(?!rel="nofollow")[^<>]*?href=['"](?<URL>[^>"]*)[^>]*?>

данные находятся в группе с именем URL или группе 1

...