2010-04-21 10 views

Répondre

1
<a\s.*?href=(?:["'](http://abc.com/articles/([0-9])+)["']).*?>(.*?)</a> 

MISE À JOUR:

Si vous avez besoin l'expression XPath ici est:

a[starts-with(@href,'http://abc.com/articles/')] 

ce renverrait tous les liens qui a l'attribut href qui commence par «http://abc.com/articles/ J'espère cela répond à votre question.

1

Ce Expressi sur ressemble à XPath, pas une regex. Un regex pour cette URL particulière ressemblerait

^http://abc.com/articles/\d+$ 

Mais je suppose que vous devez utiliser votre requête XPath pour trouver les hyperliens, puis les filtrer en fonction de l'attribut HREF en utilisant cette expression régulière.

+0

J'essaie de faire référence à i t comme ceci HtmlNodeCollection hrefs = _doc.DocumentNode.SelectNodes (@ "^ http: //abc.com/articles/ \ d + $"); mais ça me donne une erreur. Aucun conseil? – Veejay

+0

Acquérir !!! Qu'est-ce que je viens de dire? Vous mélangez différents types d'expressions! Vous * ne pouvez pas * mettre une expression régulière dedans, vous devez utiliser la requête * xpath * que vous avez trouvée et * ensuite * itérer sur les nœuds et jeter ceux que vous ne voulez pas en utilisant * l'expression régulière *. – mpen

+0

En fait, la solution de Pavel est plutôt bonne. Il n'utilise pas une "expression régulière" comme vous l'avez demandé, mais vous n'en avez pas vraiment besoin dans ce cas;) – mpen

0

Il est un peu exagéré, mais c'est la regex que j'utilise dans mes applications pour trouver des URL dans le texte brut:

(\ b (: (:? Https | ftp | file): // | www \. | ftp \.) (?: \ ([- A-Z0-9 + & @ # /% = ~ | \ $ \?!: \.] * \) | [-A- Z0-9 + & @ # /% = ~ | \ $ \?!, \.]) * (?: \ ([- A-Z0-9 + & @ # /% = ~ | \ $ \?!:, \.] * \) | [A-Z0-9 + & @ # /% = ~ | \ $]))

Questions connexes