【问题标题】:Regex to Capture and replace正则表达式捕获和替换
【发布时间】:2014-07-14 05:35:52
【问题描述】:

我有这样的网址

我需要捕获一个文本 video 并将其替换为 swf,如下所示:

如果我使用普通的string.Replace,那么它将替换视频文件名中可能包含的视频文本,所以我想在domain之后捕获一个video 并将其替换为 swf

请帮帮我..

我试过这个^(http:\/\/(?:www.)?(?:dailymotion).com\/)\?(video)$ 但不知道多少合适...

【问题讨论】:

    标签: asp.net regex vb.net


    【解决方案1】:

    搜索(http://\S+/)video(/\S+),替换为$1swf$2

    在 VB.NET 中:

    Dim ResultString As String
    Try
        ResultString = Regex.Replace(SubjectString, "(http://\S+/)video(/\S+)", "$1swf$2", RegexOptions.IgnoreCase)
    Catch ex As ArgumentException
        'Syntax error in the regular expression
    End Try
    

    说明

    • 正则表达式匹配三个部分的字符串:第 1 组、video、第 2 组,我们将其替换为第 1 组、swf、第 2 组
    • (http://\S+/) 捕获到第 1 组 http//、任何不是空格的字符和正斜杠
    • video 匹配文字字符
    • (/\S+) 将任何非空白字符的字符捕获到第 2 组

    【讨论】:

    • 谢谢+1...在我应该获得域名之前似乎工作..我使用了^(?:http:\/\/)(?:www\.)?(.*?)\.(?:com|net|org|info|biz|mobi|us|ly)$但没有工作
    • 不明白你需要对代码进行哪些更改,你能解释一下吗?我给你的代码应该替换 url 内的video,不管域如何。查看this demo底部的替换
    • 是的,没关系。没问题..我需要新的正则表达式来从 url 捕获域,例如来自 www.youtube.com 的 youtube 和来自 http:www.dailymotion.com 的dailymotion
    • 谢谢 Vignesh,很高兴它有帮助。如果我在附近,而您还有其他问题,也很高兴看到它。 :)
    【解决方案2】:

    尝试以下正则表达式并将第二个捕获组替换为swf

    ^(http:\/\/(?:www\.)?dailymotion\.com\/)([^\/]*)(.*)$
    

    DEMO

    ^(http:\/\/(?:www\.)?dailymotion\.com\/)(video)(.*)$
    

    DEMO

    从一开始,直到字符串.com/ 的字符都被第一个组捕获。接下来,直到下一个正斜杠的字符被第二组(即video)捕获。所有剩余的字符都被第三组捕获。只需将您的情况下的第二个捕获组替换为videoswf 即可获得所需的结果。

    【讨论】:

      猜你喜欢
      • 2019-01-27
      • 2014-08-30
      • 1970-01-01
      • 1970-01-01
      • 2014-06-19
      • 2010-11-19
      • 2019-02-22
      • 2013-06-27
      • 1970-01-01
      相关资源
      最近更新 更多