Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/334.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.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# Regex和remove不能正常工作_C#_Regex_Pattern Matching_Matching - Fatal编程技术网

C# Regex和remove不能正常工作

C# Regex和remove不能正常工作,c#,regex,pattern-matching,matching,C#,Regex,Pattern Matching,Matching,我对我正在做的事有些怀疑。我尝试删除文本图片,如字母“n”,它位于“(”和a“”之间,或是在“a”和“a”之间,以及许多其他情况。我使用正则表达式查找模式,但如何仅删除字母 我用过这个:“[(]”+mystring+@“[)=\-\*]” 像这样: foreach(Match mm in Regex.Matches(SourceCode, @"[( ]" + mystring + @"[)= \-\*]")) { int lng= mm.Length; SourceCode

我对我正在做的事有些怀疑。我尝试删除文本图片,如字母“n”,它位于“(”和a“”之间,或是在“a”和“a”之间,以及许多其他情况。我使用正则表达式查找模式,但如何仅删除字母

我用过这个:
“[(]”+mystring+@“[)=\-\*]”

像这样:

foreach(Match mm in Regex.Matches(SourceCode, @"[( ]" + mystring + @"[)= \-\*]"))
{   
    int lng= mm.Length;
    SourceCode = SourceCode.Remove(mm.Index + 1, lng- 2);
}
问题是它会计算原始文本的索引,如果删除了一个“n”,则下一个匹配的索引将被贴花一个,并将从错误的位置删除。真奇怪

有人知道它在做什么吗

或者你有更好的想法吗

编辑:


我不能使用替换。假设我想删除“n”,其中n类似于“(n)”,因此如果我使用替换,它将删除我不需要的所有三个字符。如果我只对n使用替换,它将从“and”中删除错误的字母,如“n”…您的问题有点难理解,但我认为您需要的是替换操作,以及:


SourceCode=Regex.Replace(SourceCode,”(?您的问题有点难理解,但我认为您需要的是替换操作,以及:


SourceCode=Regex.Replace(SourceCode,”(?每次你想改变一些东西时,把索引存储在var中怎么样?@Tim Pietzcker的解决方案将保留[(还有空格。至于你的编辑:是的,你可以使用replace。lookaround断言只确保周围的字符在那里,但它们不会成为匹配的一部分,因此不会被替换。试试我的答案,你自己看看。每次你想做些改变时,把索引存储在var中怎么样?@Tim Pietzcker的solutionon威尔记(还有空格。至于你的编辑:是的,你可以使用replace。lookaround断言只确保周围的字符在那里,但它们不会成为匹配的一部分,因此不会被替换。试试我的答案,自己看看。啊,这正是我要找的。非常感谢你,很抱歉我的英语不好!啊,tha这正是我要找的。非常感谢你,很抱歉我的英语不好!
SourceCode = Regex.Replace(SourceCode, "(?<=[( ])" + mystring + "(?=[)= *-])", "");