【问题标题】:RegEx pagination in Url rewritingUrl重写中的RegEx分页
【发布时间】:2012-02-28 00:56:01
【问题描述】:

我在我的网站上使用 url 重写并实现了代码:

        r = new Regex(@"Default.aspx\?Buy=(?<1>[\w\-\+]*)(?:&amp;|&)+PageIndex=(?<2>[\d]*)""", RegexOptions.IgnoreCase);
        txt = r.Replace(txt, "$1_dp.html?page=$2\""); 

在这种情况下,我的链接是:

www.mydomain.com/computers_dp.html?page=0 [1,2,3] 取决于页码。

RegEx 是否可以通过简单的方法检查 page = 0 然后不添加参数 ?page=0 并且仅在 PageIndex > 0 时添加它。

谢谢!

【问题讨论】:

  • 我有点困惑。如果已经有 ?page=1,您要添加 ?page=0 吗?
  • 否,如果 PageIndex 值 > 0 则应为 page=[PageIndex],如果 PageIndex == 0,则 page=0 不应在 url 中
  • PageIndex 从何而来?我认为您需要更多示例。
  • PageIndex 是原始 url:mydomain.com/Default.aspx?Buy=computers&PageIndex=1 结果应该是 mydomain.com/computers_dp.html?page=1 或 mydomain.com/computers_dp.html 如果是原始的是 mydomain.com/Default.aspx?Buy=computers&PageIndex=0

标签: asp.net regex url-rewriting


【解决方案1】:

好的,我认为这是解决此问题的最简单方法。假设您已经实现的正则表达式有效,我将添加另一个正则表达式来简单地将 "?page=0" 替换为 ""。

r2 = new Regex(@"\?page=0$""", RegexOptions.IgnoreCase);
txt = r2.Replace(txt, "\""); 

除了非常痛苦的条件前瞻之外,真的没有办法检查正则表达式中捕获的组的值,所以只需添加另一个正则表达式来消除极端情况是最简单的,因此也是最好的解决方案。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-01-04
    • 2013-10-26
    • 1970-01-01
    • 1970-01-01
    • 2013-01-30
    相关资源
    最近更新 更多