C#Regex帮助替换模式

时间:2012-08-02 13:45:20

标签: c# regex

我不是很擅长正则表达式(我一年只能使用它几次)并希望看看是否有人可以帮助查找所有

的所有实例的C#正则表达式语句

<####-##-##> or </####-##-##>

并将其替换为

<date-####-##-##> or </date-####-##-##>

这样

<2012-01-01>stuff</2012-01-01><2012-05-01>stuff2</2012-05-01>

变为

<date-2012-01-01>stuff</date-2012-01-01><date-2012-05-01>stuff2</date-2012-05-01>

2 个答案:

答案 0 :(得分:1)

string test = "<2012-01-01>stuff</2012-01-01><2012-05-01>stuff2</2012-05-01>";

var regex = new Regex(@"<(/?)(\d\d\d\d)-(\d\d)-(\d\d)>");
var result = regex.Replace(test, @"<$1date-$2-$3-$4>");

Console.WriteLine(result);

//output:
//<date-2012-01-01>stuff</date-2012-01-01><date-2012-05-01>stuff2</date-2012-05-01>

请注意,根据您正在处理的字符串中的其他文本,对细节的需求会增加。还有很多其他标签吗?不是日期的数字?等。

答案 1 :(得分:0)

如果检查标签内的值,这将是一个解决方案。

if(Regex.IsMatch(input, @"^(19|20)\d\d[- /.](0[1-9]|1[012])[- /.](0[1-9]|[12][0-9]|3[01])$"))
        {
            input.Replace(input,"date-"+input);
        }