0

我正在尝试编写一个正则表达式模式,它将在字符串中查找带有两个前导 00 的数字并将其替换为单个 0。问题是我想忽略括号中的数字,我不知道如何做这个。

例如,使用字符串:

Somewhere 001 (2009)

我想返回:

Somewhere 01 (2009)

我可以使用 [00] 搜索第一个 00,然后用 0 替换,但问题是 (2009) 变成了我不想要的 (209)。我想只是用(2009)替换(209),但我试图修复的字符串可能已经有一个有效的(209)。

任何帮助,将不胜感激!

4

3 回答 3

2

搜索一个非数字(或行首),后跟两个零,后跟一个或多个数字。

([^0-9]|^)00[0-9]+

如果数字有三个前导零怎么办?替换后您希望它有多少个零?如果您想捕获所有前导零并仅用一个替换它们:

([^0-9]|^)00+[0-9]+
于 2009-12-30T17:15:50.647 回答
1

理想情况下,您会使用负面的外观,但您的正则表达式引擎可能不支持它。这是我会在 JavaScript 中执行的操作:

string.replace(/(^|[^(\d])00+/g,"$10");

这将替换任何前面没有括号或其他数字的零字符串。[^(\d.]如果您还使用十进制数字,请将字符类更改为。

于 2009-12-30T17:30:04.017 回答
0
?Regex.Replace("Somewhere 001 (2009)", " 00([0-9]+) ", " 0$1 ")
"Somewhere 01 (2009)"
于 2009-12-30T17:22:58.353 回答