【问题标题】:REGEX Help for Coldfusion - In a URL, removing the ? And everything afterColdfusion 的 REGEX 帮助 - 在 URL 中,删除 ?之后的一切
【发布时间】:2009-08-23 04:29:56
【问题描述】:

我正在寻找一些 REGEX 帮助 给定以下 URL:http://news.cnet.com/8301-13924_3-10315534-64.html?part=rss&subj=news&tag=2547-1_3-0-20

什么是正则表达式来获取以下内容:

http://news.cnet.com/8301-13924_3-10315534-64.html

因此删除 ?以及之后的一切

谢谢,B

【问题讨论】:

    标签: regex coldfusion


    【解决方案1】:

    您当然可以为此使用正则表达式,但使用它会更有效

    listfirst(theurl, '?')

    查找由问号分隔的列表的第一部分。

    【讨论】:

    • +1 是一个不错的简单解决方案。 CF 中的 list*() 函数在以非显而易见的方式使用时会非常强大。
    • 我同意,我总是希望在正则表达式之前列出函数。
    【解决方案2】:

    在 ColdFusion 中,您可以使用正则表达式替换:

    myURL = REReplace(myURL,"\?.*$","")
    

    这会让你留下问号之前的所有内容。

    【讨论】:

      【解决方案3】:

      这个正则表达式可以解决问题:

      ^([^?]+)

      只需从匹配中取出第二个捕获组(如果匹配,第一个捕获组始终是原始字符串本身)。

      【讨论】:

        【解决方案4】:

        @Ben Doom:如果我没记错的话,#url# 变量是一个复杂的对象,不能被视为字符串或列表。我在查询字符串之前获取所有内容的方法是:

        <cfset myURL = "http://" & #cgi.HTTP_HOST# & #cgi.SCRIPT_NAME# />
        

        【讨论】:

        • 显然,我并不是要在 url 范围内尝试此操作。我不假思索地使用 'url' 来表示持有相关 URL 的变量。
        • 是的,你知道在我写完答案后我想到了你指的是一个变量,其中存储了 url,而不是作用域本身。虽然答案很好,但我不会想到使用这种技术。
        猜你喜欢
        • 2015-03-09
        • 1970-01-01
        • 2011-04-23
        • 2015-10-10
        • 2011-03-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多