0

我有以下字符串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

4

3 回答 3

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");
});

其他语言中可能发生的事情可能是另一回事。

试试RegexBuddy 的主页了解详情。

于 2012-12-04T22:09:47.357 回答
0

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

Fred 好像已经为你创建了替换方法,这里不再赘述。

于 2012-12-05T00:36:03.980 回答
0

我已经设法在 Regex Buddy 使用的 JGSoft 语言中找到了格式的解决方案,这要感谢所有提供的建议,这些建议帮助我将我的想法引导到正确的方向。

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

使用组名而不是正则表达式通过反向引用和$语法分配组。

因此替换字符串或任何类似字符串中的0for 。我使用了以下搜索和替换语法}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

于 2012-12-05T21:22:47.057 回答