C# Regex和remove不能正常工作
我对我正在做的事有些怀疑。我尝试删除文本图片,如字母“n”,它位于“(”和a“”之间,或是在“a”和“a”之间,以及许多其他情况。我使用正则表达式查找模式,但如何仅删除字母 我用过这个: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
“[(]”+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 + "(?=[)= *-])", "");