【发布时间】:2013-06-17 15:48:53
【问题描述】:
这只是出于好奇而提出的一个问题 - 我正在查看 this question,我想知道您如何在一个 Regex Replace 中同时进行所需的替换。
所以,情况是我们有以下输入:
8.11.2012 16:15:10
21.11.2012 15:00:54
11.11.2012 0:24:24
8.11.2012 16:06:53
9.11.2012 0:49:37
并希望创建以下输出:
08_11_2012_16_15_10
21_11_2012_15_00_54
11_11_2012_00_24_24
08_11_2012_16_06_53
09_11_2012_00_49_37
换句话说:
- 将字符串的时间/日期部分中的任何单个数字替换为“0”和单个字符。
发布的解决方案非常适合:
将
\b(\d)\b替换为0$1 - 用“_”替换任何分隔符
那就是简单地将
[\s\:.]替换为_
我的问题是,是否有任何方法可以在单个正则表达式中进行两次替换,或者是否绝对有必要进行 2 次替换迭代?
那会是什么样子??
只是想在这里学习 - 谢谢!!
此外,即使针对 Notepad++ 提出了这个问题,我也使用 .Net (C# / VB)。
【问题讨论】:
-
您从 5 个输入开始,但只有 4 个输出。那是错字吗?你好像不见了 09_11_2012_00_49_37
-
仅供参考:如果这是您在 .NET 中的特定需求,您可以使用(C# 代码)完成所有这些操作:
DateTime.ParseExact(@"d\/M\/yyyy H\:mm\:ss")和DateTime.ToString(@"dd\_MM\_yyyy\_HH\_mm\_ss")- 而不是正则表达式。 -
@Joe - 这实际上是一个非常酷的解决方案,但这更多是关于如何在单个语句中进行 2 次正则表达式替换的问题,这只是我手头的示例......不过,这并不能阻止您的解决方案成为一个非常好的解决方案!
-
@JohnBustos 我错了,删除了评论。
-
感谢您了解@Dgrin91 - 您是 100% 正确的。我更新了问题