C# C正则表达式。替换不匹配和删除双引号
我在谷歌上搜索答案,在Stack Exchange上发现了一些问题,提出了类似的问题,但这些问题对我没有帮助。例如,我发现,但给出的答案太复杂,我无法理解。我不知道也不懂正则表达式。我只想从字符串中去掉一个双引号 简单地说,我有一个字符串\123.456\需要删除\ 所以我用我的表情[^\w\\]打电话之后C# C正则表达式。替换不匹配和删除双引号,c#,regex,C#,Regex,我在谷歌上搜索答案,在Stack Exchange上发现了一些问题,提出了类似的问题,但这些问题对我没有帮助。例如,我发现,但给出的答案太复杂,我无法理解。我不知道也不懂正则表达式。我只想从字符串中去掉一个双引号 简单地说,我有一个字符串\123.456\需要删除\ 所以我用我的表情[^\w\\]打电话之后 string myString Regex.Replace("\"123.456\"", "[^\\w\\\"]", "", RegexOptions
string myString Regex.Replace("\"123.456\"", "[^\\w\\\"]", "",
RegexOptions.None, TimeSpan.FromSeconds(1.5));
myString是\123.456\。我只想知道我的表情应该是什么。我无法理解任何关于学习正则表达式的冗长讨论或讲座
我的例子是直接从微软得到的,所以基本上我所做的就是用\替换@
更新
显然,试图问一个简单的问题只会吸引巨魔。我不想变得太复杂,因为我不想你们这些努力工作、忙碌的人花太多时间回答错误的问题。我只是想表现得好一点
在这种情况下,我们需要解析来自多个客户机的输入文件,接下来,客户机的数量会增加,每个客户机的文件数量也会增加
我们发现,在我们的几个客户传输的文件中,许多字段将具有各种额外字符。我们不知道这些角色是如何或为什么出现的,我们的客户也不知道。如果你想知道他们为什么不说,请继续,这些不是你要问的问题
因此,我们有许多来自许多客户机的文件,每个文件都有许多行和许多数据字段,我们需要去掉坏字符
我采用了微软的方法,并对其进行了一些修改,使其更具动态性
private string CleanInput(string strIn, string chars)
{
// Replace invalid characters with empty strings.
try
{
string regexString = string.Format(@"[^\w\{0}]", chars);
return Regex.Replace(strIn, regexString, "",
RegexOptions.None, TimeSpan.FromSeconds(1.5));
}
// If we timeout when replacing invalid characters,
// we should return Empty.
catch (RegexMatchTimeoutException)
{
return string.Empty;
}
这里的目标是能够去除任何不属于动态的字符,但我们不能硬编码这些字符,因为不是所有字段都有这些字符,更重要的是,某些字段将包含一些坏字符以及其他字符,这些字符对该字段来说不算坏,但对其他字段来说可能算坏
到目前为止和我在一起
所以,为了在星期五之前完成我的工作,是的,明天,我决定从3个输入文件中只有几个已知的坏字符开始慢慢地开始。到目前为止,这些字符是单引号、破折号、双引号、美元符号、逗号。但并非我的3个文件中的所有字段都需要去除这些字符,因此我打算只在需要的字段上调用CleanInput方法,并且只对需要去除的字符调用CleanInput方法
好的,当我在测试的时候,我发现在一个字段中,我们想要去掉逗号,单引号,双引号和美元符号,它并没有去掉双引号,显然还有反斜杠。因此,我调试了这个问题,首先只传入了逗号,这很有效。然后我试着只输入一句话——这很有效。然后我通过了美元标志——这很有效。然后我传入了转义的双引号-这不起作用-双引号仍然在字符串中。因此,我在一个新的控制台项目中简化了我的测试,并对字符串进行了硬编码,然后调用了我的方法,以确保没有其他东西会干扰它
我希望并祈祷没有人花费他们宝贵的时间来重新配置我的输入文件,或试图教我如何结束所有的正则表达式编程。我必须在明天之前完成这件事。拜托,我只想知道如何从给定字符串中去掉双引号和反斜杠 与其让regex参与进来,不如使用Replace
var myString = "\\\"123.456\\\"";
var myCleanString = myString.Replace(@"\""", "");
在一个求反的组上匹配[^]位。这将匹配任何不在方括号内的字符并替换它。要替换组中的任何内容,只需将要替换的字符放在方括号内并删除否定^: 如果您知道要包含而不是排除的内容,则可以使用负面版本。例如,如果您知道只需要数字和句点字符,则可以执行以下操作:
string myString = Regex.Replace("\"123.456\"", "[^\\d.]", "",
RegexOptions.None, TimeSpan.FromSeconds(1.5));
你想替换这两个引号吗?i、 e.你想以123.456结尾?你知道\是一个字符,而不是两个,对吗?如果你只想删除前导字符和尾随字符,你可以使用yourString=yourString.Trim“”。你想接收的最后一个字符串是什么?@James,你想得到未知规范的一般答案吗?是的。吻正则表达式是一个简单问题的复杂解决方案。
string myString = Regex.Replace("\"123.456\"", "[^\\d.]", "",
RegexOptions.None, TimeSpan.FromSeconds(1.5));