我尝试修改一组字符串。我需要替换一些未知的部分,但还要保留未知的中间部分。在记事本++中,我使用了这个
作为正则输入:.*(ThemeResource .*?Brush).*
和正则表达式输出:/1
结果如下:
输入:
"<Setter Property="Foreground" Value="{ThemeResource SystemControlForegroundBaseHighBrush}" />"
"<Setter Property="Background" Value="{ThemeResource SystemControlBackgroundAltMediumLowBrush}" />"
"<Setter Property="BorderBrush" Value="{ThemeResource SystemControlForegroundBaseMediumLowBrush}" />"
"<DiscreteObjectKeyFrame KeyTime="0" Value="{ThemeResource SystemControlPageBackgroundAltMediumBrush}" />"
输出:
"ThemeResource SystemControlForegroundBaseHighBrush"
"ThemeResource SystemControlBackgroundAltMediumLowBrush"
"ThemeResource SystemControlForegroundBaseMediumLowBrush"
"ThemeResource SystemControlPageBackgroundAltMediumBrush"
但是使用c#-regex我的输出一直都是:
"/1"
我猜想,C#和notepad ++ regex之间存在根本差异,但不知道要更改什么,因为我的regex-input-selection似乎按预期工作。
编辑:
我的代码:
List<string> ls = File.ReadLines(@"c:\cbTemplate.xml").ToList().Select(x=>Regex.Replace(x, ".*{(ThemeResource .*?Brush).*", @"\1"));
我的记事本++“查找并替换”:
最佳答案
要获取捕获组,请使用$1
而不是/1
:
List<string> ls = File.ReadLines(@"c:\cbTemplate.xml").ToList().Select(x=>Regex.Replace(x, ".*{(ThemeResource .*?Brush).*", @"$1"));
关于c# - 正则表达式:保留未知的子字符串,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35060646/