Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.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正则表达式。替换不匹配和删除双引号_C#_Regex - Fatal编程技术网

C# C正则表达式。替换不匹配和删除双引号

C# C正则表达式。替换不匹配和删除双引号,c#,regex,C#,Regex,我在谷歌上搜索答案,在Stack Exchange上发现了一些问题,提出了类似的问题,但这些问题对我没有帮助。例如,我发现,但给出的答案太复杂,我无法理解。我不知道也不懂正则表达式。我只想从字符串中去掉一个双引号 简单地说,我有一个字符串\123.456\需要删除\ 所以我用我的表情[^\w\\]打电话之后 string myString Regex.Replace("\"123.456\"", "[^\\w\\\"]", "", RegexOptions

我在谷歌上搜索答案,在Stack Exchange上发现了一些问题,提出了类似的问题,但这些问题对我没有帮助。例如,我发现,但给出的答案太复杂,我无法理解。我不知道也不懂正则表达式。我只想从字符串中去掉一个双引号

简单地说,我有一个字符串\123.456\需要删除\

所以我用我的表情[^\w\\]打电话之后

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));