起始:流量统计系统中衍生的小功能

目的:提取Url中Querystring指定键的值

BETA: (?<=key\=).*?(?=\&|$)

加强: (?<=(\&|\?|^)key\=).*?(?=\&|$)

示例代码

示例代码
private const string _regexSEQuery = @"(?<=(\&|\?|^)({0})\=).*?(?=\&|$)";
/// <summary>
/// 查找关键字
/// <remarks>更多访问http://www.cnblogs.com/ronli/</remarks>
/// <param name="querykey">多个QueryKey按优先顺序用'|'分隔</param>
/// </summary>
private string RegexMatch(string input, string querykey, RegexOptions options)
{
return Regex.Match(input, string.Format(_regexSEQuery, querykey), options).Value.Trim();
}

/// <summary>
/// 复合查找关键字
/// <remarks>更多访问http://www.cnblogs.com/ronli/</remarks>
/// <param name="querykey">多个QueryKey按优先顺序用'&'(连接)或'|'(短路)分隔</param>
/// </summary>
private string RegexMatches(string input, string querykey, RegexOptions options)
{
string value = "";
string[] orKeys = querykey.Split('|');
string[] andKeys;

foreach (string or in orKeys)
{
andKeys
= or.Split('&');
foreach (string and in andKeys)
{
value
+= (RegexMatch(input, and, options) + " ");
}
if (value != "") break;
}
return value.Trim();
}

By Ron.li (http://www.cnblogs.com/ronli/)

实际应用:

提取搜索引擎的搜索关键字。

应用代码

应用代码
http://www.cnblogs.com/ronli/</remarks>
private string GetSEQuery(HttpContext context)
{
//搜索关键字
string query = "";
string queryStrings = context.Server.UrlDecode(context.Request.UrlReferrer.Query);

if (visit.RefDomain.Contains("bing"))
query
= RegexMatch(queryStrings, "q", RegexOptions.IgnoreCase);
else if (visit.RefDomain.Contains("google"))
//q为空用oq代替
query = RegexMatches(queryStrings, "q|oq", RegexOptions.IgnoreCase);
//同时提取q和oq(空格连接)
//query = RegexMatches(queryStrings, "q&oq", RegexOptions.IgnoreCase);
//提取q,若为空用aq和oq代替
//query = RegexMatches(queryStrings, "q|aq&oq", RegexOptions.IgnoreCase);
else if (visit.RefDomain.Contains("baidu"))
query
= RegexMatch(queryStrings, "wd", RegexOptions.IgnoreCase);
else if (visit.RefDomain.Contains("yahoo"))
query
= RegexMatch(queryStrings, "p", RegexOptions.IgnoreCase);
else if (visit.RefDomain.Contains("sousou"))
query
= RegexMatch(queryStrings, "w", RegexOptions.IgnoreCase);
else if (visit.RefDomain.Contains("ask"))
query
= RegexMatch(queryStrings, "q", RegexOptions.IgnoreCase);

return query;
}

相关文章:

  • 2022-12-23
  • 2022-12-23
  • 2021-11-13
  • 2022-12-23
  • 2022-03-01
  • 2022-12-23
  • 2022-02-09
  • 2022-02-10
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-02-25
相关资源
相似解决方案