更改路线链接的直接链接

时间:2013-07-14 20:45:37

标签: c# regex asp.net-mvc-3 parsing

从我的数据库中,我正在抓取网站内容的正文栏。

出于某种原因,某些 href 会在没有破折号的情况下返回(可能会逃脱),因此href="/my-page"将返回href="my-page"而没有破折号。

我需要知道如何更改body列以查找href="<some value>"并为它们添加斜杠。只有它没有斜杠,或者它已经没有 http: www。

我可以通过HTML解析任何想法吗?

2 个答案:

答案 0 :(得分:0)

您可以尝试进行粗略处理:

  1. 使用href="([^"]+)"查找实际指向某个资源的每个链接。
  2. 迭代每个找到的资源(每个匹配的第1组),并检查它是否以/http://www.开头。如果没有,请添加前导/并将代码中的原始值替换为已修改的值(对于替换,请尝试将修改后的值替换为完全匹配(组0)的值)。 / LI>

答案 1 :(得分:0)

这可能是您在链接检索中更好地解决的问题,但我认为这应该是您所追求的:

Regex.Replace(yourString, @"(href="")(?!www)(?!http)", "$1/"));

它将匹配并捕获任何href=",而不是wwwhttp。然后它只在匹配的组后插入/。它可能是一个有点复杂字符串的时尚。