gpt4 book ai didi

.NET 正则表达式替换组内的字符

转载 作者:行者123 更新时间:2023-12-01 12:48:58 26 4
gpt4 key购买 nike

我正在使用正则表达式替换(在 .Net 应用程序中)从条形码创建项目 ID。这是我正在使用的正则表达式:

^(?<Bestellnr>\w{6})(?<Pos>\d{3})M(?<Menge>\d{5})P(?<Lfd>\d{3})$

替换字符串是(它有前导空格,但这在这里并不重要):

${Bestellnr}${Pos} ${Lfd}

一个示例输入是:

685774010M00555P002

上述替换的当前结果是:

685774010 002

但现在我的客户希望我从“Pos”和“Lfd”组中删除前导零,因此结果应更改为:

685774 10   2

编辑:请注意“lfd”组中的两个 零被两个 空格替换了!

我已经尝试了几个小时,但似乎无法正常工作。我能找到的最佳方法是为前导零创建额外的组,例如:

^(?<Bestellnr>\w{6})(?<PosNull>0*)(?<Pos>\d{1,})M(?<Menge>\d{5})P(?<LfdNull>0*)(?<Lfd>\d{1,})$

但我不知道如何用正确数量的空格替换“空组”。这可能吗? (直到现在我还认为没有什么是 Regex 做不到的;-)

有人能帮忙吗?

最佳答案

您可以使用 matchevaluator 将 0 替换为空格来实现!

Regex.Replace("685774010M00555P002",
@"^(?<Bestellnr>\w{6})(?<Pos>\d{3})M(?<Menge>\d{5})P(?<Lfd>\d{3})$",
m=>m.Groups["Bestellnr"].Value+""+
Regex.Replace(m.Groups["Pos"].Value,"(?<=^0*)0"," ")+
" "+
Regex.Replace(m.Groups["Lfd"].Value,"(?<=^0*)0"," "));

关于.NET 正则表达式替换组内的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13722297/

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