正则表达式用零替换字符

时间:2012-12-04 14:40:10

标签: regex replace zero

我有以下字符串3}HFB}4AF4}1 -M}1.

我使用正则表达式搜索了这个字符串:

([0-9])(\})([A-Z]{3})(\})([0-9][A-Z]{2}[0-9])(\})([0-9])(\s\-)([A-Z])(\})([0-9]).

我想将}替换为0。我正在寻找的结果是30HFB04AF401-M01,任何帮助都是适当的。我使用的工具是Regex Buddy

3 个答案:

答案 0 :(得分:1)

可能的解决方案

问题解决了吗?至少在JavaScript中: - )

"3}HFB}4AF4}1 -M}1".replace(/\}/g, "0");
// "30HFB04AF401 -M01"

我错过了这一点,对吧?

假设语言是JavaScript,我们可以编写类似

的内容
"dfghj456783}HFB}4AF4}1 -M}1fghjkl8765".replace(/(?:[\d\w\s]+)([0-9]}[A-Z]{3}}[0-9][A-Z]{2}[0-9]}[0-9] -[A-Z]}[0-9])(?:[\d\w\s]+)/g, function () {
    return arguments[1].replace(/}/g, "0");
});

其他语言可能会有不同的故事。

请尝试the home of RegexBuddy了解详情。

答案 1 :(得分:0)

所以你已经有了一个表达式来查找字符串的实例。现在你可以使用组来替换字符,或者你可以在你找到的字符串上使用单独的正则表达式,只需替换}中的group(0)字符(这是输入的整个匹配部分) )。我当然更喜欢后者。

Fred似乎已经为你创建了替换方法,所以我不会在这里重复它。

答案 2 :(得分:0)

我已经设法找到了Regex Buddy使用的JGSoft Lanugage中的格式化解决方案,感谢所有提供的建议,帮助我将思路引向正确的方向。

解决方案(我仍然是Regex的初学者,因此语法可能不高效,但它可以完成工作!!)

使用群组名称代替正则表达式,并使用反向引用和$语法分组。

因此,将0替换为字符串}中的3}HFB}4AF4}1 -M}1或任何类似的字符串。我使用了以下搜索和替换语法

搜索:(?<Gp1>([0-9]))(?:})(?<Gp2>([A-Z]){3})(?:})(?<Gp3>([0-9])([A-Z]{2})([0-9]))(?:})(?<Gp4>([0-9]))(?:\s-)(?<Gp5>([A-Z]))(?:})(?<Gp6>[0-9])

替换:${Gp1}0${Gp2}0${Gp3}0${Gp4}-${Gp5}0${Gp6}

结果:30HFB04AF401-M01