gpt4 book ai didi

c# - 重叠替换正则表达式?

转载 作者:太空宇宙 更新时间:2023-11-03 12:43:17 24 4
gpt4 key购买 nike

我有一个字符串

work 1 work 2 work 3 work 4 work 5

我要获取

work 1 work 21 work 321 work 4321 work 54321

我用了这个命令但是没用

    (?<=work\s(\d)+.)(work)(\s\d+)
$2$3$1

问题是它没有记录第一次出现后被替换的信息,可以做的是保存每次出现后的变化。

当我应用我得到的命令时

work 1 work 21 work 32 work 43 work 54

最佳答案

您实际上不需要重叠的正则表达式匹配,您需要能够匹配每个 work +space+digits 并保存数字值以在每次迭代时更新。

正则表达式简化为一个 work (?<num>\d+) (匹配 work ,一个空格并将一个或多个数字捕获到“num”组中)。

Regex.Replace 中使用回调方法方法:

using System;
using System.IO;
using System.Text.RegularExpressions;
using System.Linq;
public class Test
{
public static string num = string.Empty;
public static void Main()
{
var s = "work 1 work 2 work 3 work 4 work 5";
Console.WriteLine(Regex.Replace(s, @"work (?<num>\d+)", Repl));
}

public static string Repl(Match m)
{
num = m.Groups["num"].Value + num;
return string.Format("work {0}", num);
}
}

参见 C# demo

关于c# - 重叠替换正则表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38162738/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com