gpt4 book ai didi

c# - Regex.Replace 用转义字符添加 0

转载 作者:行者123 更新时间:2023-12-03 23:00:38 24 4
gpt4 key购买 nike

我想查找个位数并为日期时间格式添加“0”。

我尝试了下面的代码:

var match = Regex.Replace(@"2017-12-15T8:15:02.000000Z", 
@"([^\d])(\d{1})([^\d])",
@"$10$2$3");

问题是c#尝试找到匹配的组索引10(因为$10但它必须是$1和“0”)如何可以使用带转义字符的 0 吗?

最佳答案

您的主要问题在于反向引用语法,您可以通过用大括号括起组 ID 来轻松修复它,即 @"${1}0$2$3" 。但是,稍后正则表达式可能会出现其他问题。

使用环视来避免此类问题以及重叠匹配的问题是最安全的:

var match = Regex.Replace(@"2017-12-15T8:15:02.000000Z", 
@"(?<!\d)\d(?!\d)",
@"0$&");

请参阅regex demo

enter image description here

专利详情

  • (?<!\d) - 当前位置左侧不允许有数字
  • \d - 任何 Unicode 数字(如果您传递 RegexOptions.ECMAScript 选项,它将仅匹配 ASCII 数字)
  • (?!\d) - 当前位置右侧不允许有数字。

在替换模式中,$&代表整个匹配(无需用捕获括号将 \d 括起来)。

关于c# - Regex.Replace 用转义字符添加 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47791327/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com