Regex.Replace从char位置到另一个char位置

时间:2013-08-22 12:20:23

标签: regex vb.net

下午好。我是一名VB.Net程序员,尽可能地将正则表达式实现到我的应用程序中。我选择正则表达式而不是网络方法,因为练习是完美的。这只是为了我的正则表达式知识的好处。

取一个像这样的字符串,例如忽略引号。 ":1Af404080A83hfndsgt4u47",我正在查看的字符串部分是这8个值。 " 04080A83"这些可以改变。价值观并不重要,而是位置。从0开始,第一个字符位置将是5到12.我知道我们可以匹配任何字符,直到{5}但是可以替换范围。例{5,12}。最终输出将是"":1Af4Hello123hfndsgt4u47"" Hello123

感谢您的时间。可能不可能像我对我自己的Benita说的那样。

4 个答案:

答案 0 :(得分:1)

为什么需要正则表达式来替换string中的范围?字符串方法更有效,而且更具可读性。

string input = ":1Af404080A83hfndsgt4u47";
string replace = "Hello123";
int start = 5;
string result = "";
if (input.Length >= start)
{
    result = input.Substring(0, start) + replace + input.Substring(start + replace.Length);
    Console.Write(result);
}

Demo

VB.NET:

Dim input As String = ":1Af404080A83hfndsgt4u47"
Dim replace As String = "Hello123"
Dim start As Integer = 5
Dim result As String = ""
If input.Length >= start Then
    result = input.Substring(0, start) & replace & input.Substring(start + replace.Length)
    Console.Write(result)
End If

答案 1 :(得分:1)

您可以使用lookbehind确保跳过前五个字符(?<=^.{5}),然后您只需将{8}个字符与.{8}匹配,您可以将其替换为任何您等。

result = Regex.Replace(input, "(?<=^.{5}).{8}", "Hello123")

Working demo.

答案 2 :(得分:0)

我不确定你的意思

  

我知道我们可以匹配任何字符,直到{5}但是可以替换范围。例{5,12}。

但是这个正则表达式应该足以满足你的需求。

(?<=^(\w{4}))\w{8}

答案 3 :(得分:0)

使用正则表达式执行此操作的方法如下:

Dim regex As Regex = new Regex("(.{5}).{8}(.*)")
Console.WriteLine(regex.Replace(":1Af404080A83hfndsgt4u47", "$1Hello123$2"))

另见: How to use named groups when performing a Regex.Replace() How to RegEx Replace named groups