Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 用正则表达式将字符串中的一些字符替换为空字符_C#_Regex - Fatal编程技术网

C# 用正则表达式将字符串中的一些字符替换为空字符

C# 用正则表达式将字符串中的一些字符替换为空字符,c#,regex,C#,Regex,我有一个字符串,我想用字符串中的空字符替换一些字符 例如,我的字符串是: "<anyKey>2018-10-08T00.00000-07:00</anyKey>" “2018-10-08T00.00000-07:00” 我使用的正则表达式是: return System.Text.RegularExpressions.Regex.Replace(sb.ToString(), "<{1}[0-9a-zA-Z]*Key>{1}[0-9]{4}-[0-9]{2}

我有一个字符串,我想用字符串中的空字符替换一些字符

例如,我的字符串是:

"<anyKey>2018-10-08T00.00000-07:00</anyKey>"
“2018-10-08T00.00000-07:00”
我使用的正则表达式是:

return System.Text.RegularExpressions.Regex.Replace(sb.ToString(), "<{1}[0-9a-zA-Z]*Key>{1}[0-9]{4}-[0-9]{2}-[0-9]{2}(?<timeandzone>T[0-9]{2}.[0-9]{5}-[0-9]{2}:[0-9]{2})</{1}[0-9a-zA-Z]*Key>{1}", ""); 
returnsystem.Text.RegularExpressions.Regex.Replace(sb.ToString(),“{1}[0-9]{4}-[0-9]{2}-[0-9]{2}(?T[0-9]{2}.[0-9]{5}-[0-9]{2}:[0-9]{2}{1},”;
所以我得到的输出是空的。这意味着我的正则表达式是正确的,它将用空字符串替换它,但我只希望输出如下:

"<anyKey>2018-10-08</anyKey>"
“2018-10-08”
我只想在标记中找到以“T”开头的东西,其中有“Key”字,并将其替换为“”

你能告诉我这里应该换什么吗

更新:
我有一个1000行的XML,但它存储在一个字符串中,因此在某些情况下,我需要替换它。

我通常将正则表达式埋在工具箱的底部,尽可能选择其他更专门构建的工具

考虑到这一点,我将使用
DateTime
类来实现这一点

anykeyNode.InnerText = DateTime.Parse(anykeyNode.InnerText).ToShortDateString();

我认为,在尝试捕获大型信息集或在大型字符串/验证中进行替换时,正则表达式是理想的。你认为你会同意我的意见吗?此外,我也不认为这种简单的Regex.Regex是捕获模式(无论大小)的理想选择。当使用正则表达式比其他方法更复杂时,由程序员自己决定。如果要使用DateTime,请改用TryParse,这样就不会出现异常。或者至少在调用
ToShortDateString
@DetectivePikachu时使用安全导航操作员我有一个巨大的字符串,它不仅仅是一个小字符串line@Tiramonium当前位置我完全不同意你的说法。捕获“大信息集”和“在大字符串中进行替换”并不是正则表达式的全部内容。RegEx是关于在字符串中搜索模式的。RegEx语言没有指定这些字符串大小的下限或上限。@SamAxe我的意思是实际意义上的。当然,在真正做任何事情之前,您需要构建一个匹配某个内容的表达式,但是您可以用匹配项做的事情非常简单。另外,关于搜索值的大小,我也是从实际的角度来看的。小的价值观更容易被传统方式操纵,但大的价值观则不然。这就是正则表达式的用武之地。这是一篇关于SO的臭名昭著的帖子,但它不适用于这里。他没有解析HTML/XML文档。这甚至不是严格意义上的解析。这是正则表达式要解决的模式匹配问题。如果您想将替换限制为在HTML或XML元素中找到的文本,那么您绝对是在尝试解析数据。标记的副本提供了为什么这是毫无希望的细节,以及如果你坚持的话可以尝试的东西。如果您已经隔离了实际要修改的文本(即,通过使用实际的解析器并提取感兴趣的节点),但仍然无法替换内容,请发布一个新问题,在该问题中,您提供了一个很好的演示您尝试过的内容,我们不能假设他是基于一行有效的XML来解析整个文档的。当你得到一个经过编辑的答案并添加了额外的细节时,你很容易变得尖刻,但这不是必须的。是的,很抱歉没有说清楚。我有一个巨大的文本,在某些情况下(如果一个标志是真的),那么我只需要删除标记中包含“关键字”的所有内容,并删除“T”中的所有内容。