c#在两个xml标签内替换breakline

时间:2017-10-24 09:29:20

标签: c# regex

我需要替换xml字符串中的所有\ r \ n

我有这个正则表达式模式来完成我的工作:

xmlString = " <!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\"> <html xmlns=\"http://www.w3.org/1999/xhtml\" xml:lang=\"en\" lang=\"en\"> <head> \n\r<meta name="author" \ncontent="John Doe"> </head> </html> "

Regex.Replace(xmlString, @"\r?\n\s*", "");

但是现在我想在2个xml标签中使用这个模式(在这种情况下是头部)

Regex.Replace(xmlString, @"<head>\r?\n\s*</head>", "");

所以这个表达式试图替换head标签内的所有breaklines ..但由于某种原因它不起作用......

我看到其他一些主题使用?或*,但不工作

想法?

1 个答案:

答案 0 :(得分:2)

如果您不介意新行和回车的顺序,您可以使用以下正则表达式并向前看并查看头标记:

Regex.Replace(xmlString, @"(?<=\<head\>.*)(\n|\r)(?=.*\</head\>)", "", RegexOptions.Singleline)