Следующее регулярное выражение выполнит работу:
<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"
Разыскиваемые URL будут в группе захвата # 1. Например. в Ruby это будет:
if input =~ /<a (?![^>]*?rel="nofollow")[^>]*?href="(.*?)"/
match = $~[1]
end
Так как он принимает [^>]*?
до rel
в негативном прогнозе , href
или что-либо еще, может предшествовать rel
. Если href
придет после rel
, конечно, все будет в порядке.