我正在尝试执行一个简单的正则表达式查找和替换,在一些数字之后在字符串中添加一个制表符,如下所述。
这
a/users/12345/badges
要
a/users/12345 /badges
我正在使用以下内容:
s = regex.replace(s, "(a\/users\/\d*)("a\/users\/\d*\t)", $1 $2")
但我明显做错了。
我哪里出错,我知道这是一个愚蠢的错误,但我会非常感激地帮助你。
VBVirg
答案 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