正则表达式捕获和替换

时间:2014-07-14 05:35:53

标签: asp.net regex vb.net

我有这样的网址

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

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

请帮帮我..

我试过这个swf,但不知道它有多少......

2 个答案:

答案 0 :(得分: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 :(得分:0)

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

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

DEMO

OR

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

DEMO

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