1

我不太擅长正则表达式(我一年只能使用几次),想看看是否有人可以帮助使用 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>
4

2 回答 2

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>

请注意,对细节的需求取决于您正在处理的字符串中的其他文本。还有很多其他标签吗?不是日期的数字?ETC..

于 2012-08-02T13:54:37.027 回答
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);
        }
于 2012-08-02T13:57:41.590 回答