我尝试修改一组字符串。我需要替换一些未知的部分,但还要保留未知的中间部分。在记事本++中,我使用了这个

作为正则输入:.*(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"));


我的记事本++“查找并替换”:

c# - 正则表达式:保留未知的子字符串-LMLPHP

最佳答案

要获取捕获组,请使用$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/

10-13 03:18