需要dotnet regex用0%替换下划线(_)

时间:2016-05-25 06:24:59

标签: javascript .net regex

我们正在扫描卡片,卡片上印有ZZZZ_ss16并扫描为ZZZZ0%ss16。由于印刷错误,用户最初使用错误的号码注册卡。卡片重印会很棒,但不是一种选择。

我有一个javascript正则表达式应该可以完成这项工作,但是我无法将其转换为使用dotnet。

s/^(\w{4}).(\w{4})/\10%\1/

我们只需要前4个字符,将_替换为0%,然后替换最后4个字符。

希望有人可以提供帮助。

2 个答案:

答案 0 :(得分:3)

在这种情况下,您可以使用

^(\w{4})_(\w{4})$

并替换为$10%$2

<强> Regex Demo

.net使用此

var pattern = "^([A-Za-z0-9_]{4})_([A-Za-z0-9_]{4})$";
var template = "ZZZZ_ss16";
var replaceWith = "${1}0%$2";

<强> Ideone Demo

答案 1 :(得分:1)

您可以创建一个正则表达式,将前四个字符捕获到捕获组1中,将后四个字符捕获到捕获组2中,然后执行替换输出组1,然后执行0%,然后执行组2。

var pattern = new Regex(@"^(\w{4})_(\w{4})$");
var input = "ZZZZ_ss16";
var output = pattern.Replace(input, "${1}0%$2");
// RESULT: ZZZZ0%ss16

Demo

必须在$之后转义数字,否则它将被解释为第10个捕获组。推荐阅读:https://msdn.microsoft.com/en-us/library/ewy2t5e0%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396