正则表达式VB.Net Regex.Replace

时间:2015-06-10 12:09:27

标签: regex vb.net

我正在尝试执行一个简单的正则表达式查找和替换,在一些数字之后在字符串中添加一个制表符,如下所述。

a/users/12345/badges

a/users/12345   /badges

我正在使用以下内容:

s = regex.replace(s, "(a\/users\/\d*)("a\/users\/\d*\t)", $1 $2")

但我明显做错了。

我哪里出错,我知道这是一个愚蠢的错误,但我会非常感激地帮助你。

VBVirg

2 个答案:

答案 0 :(得分:1)

你只需前瞻就可以在最后/之前找到位置:

Dim s As String = Regex.Replace("a/users/12345/badges", "(?=/[^/]*$)", vbTab)

输出:

a/users/12345   /badges

请参阅IDEONE demo

或者,您可以使用LastIndexOf owith Insert

Dim str2 As String
Dim str As String = "a/users/12345/badges"
Dim idx = str.LastIndexOf("/")
If idx > 0 Then
   str2 = str.Insert(idx, vbTab)
End If

答案 1 :(得分:0)

当我读到“在一些数字之后在字符串中添加一个标签”时,我认为可能有多个数字可以出现在正斜杠之间。这种模式:

"/(\d+)/"

仅捕获正斜杠之间的数字,并允许您插入如下的标签:

Imports System.Text.RegularExpressions

Module Module1
    Sub Main()
        Dim str As String = "a/54321/us123ers/12345/badges"
        str = Regex.Replace(str, "/(\d+)/", String.Format("/$1{0}/", vbTab))

        Console.WriteLine(str)
        Console.ReadLine()
    End Sub
End Module

结果(注意:标签空格的长度可能不同):

a/54321 /us123ers/12345 /badges

当String为“a / 54321 / users / 12345 / badges”时,结果为:

a/54321 /users/12345    /badges