将[0-9]替换为0 [0-9]

时间:2017-01-25 16:52:16

标签: c# .net regex

我想知道是否有办法使用regex在每个1位数字前添加0。

输入字符串是由' - '分隔的1-3个数字的列表。 (即2812-5667-645-65-46)。

我遇到的两个问题是:

  1. 匹配所有可能的1位数字,而不对以下各项进行单独检查:^[0-9]--[0-9]-^[0-9]&-[0-9]&
  2. 添加0而不删除任何其他内容。转而:Regex.Replace(input, "^[0-9]-","0")转换为:Regex.Replace(input, "^[0-9]-","^0[0-9]-")

1 个答案:

答案 0 :(得分:3)

  • 搜索:(?<!\d)(\d)(?!\d)
  • 替换0$1

其中:

  • (?<!\d)是一个负面的背后,确保我们在比赛前没有数字。
  • (\d)是一个捕获组,在替换部分中由$1引用。
  • (?!\d)是一个负面的预测,确保我们在比赛结束后没有数字。

有关信息,请参阅lookaround

这会将0 +数字替换为其他数字之前或之后的数字。

Regex.Replace(input, @"(?<!\d)(\d)(?!\d)","0$1")