使用正则表达式查找xaml文本

时间:2014-06-26 05:57:38

标签: c# regex wpf xaml

如何使用TextBlocks中的搜索找到包含Style参数的xaml文件中的所有Microsoft Visual Studio。这里有可用的正则表达式吗?以下是块的示例:

<TextBlock Text="{Binding LocalizedResources.boom, Source={StaticResource LocalizedStrings}}"
        Foreground="{StaticResource gray}"
        TextWrapping="Wrap"
        Style="{StaticResource sdfsdf}"
        HorizontalAlignment="Center"
        Visibility="{Binding ErrorOccured,Converter={StaticResource ToVisibilityConverter},ConverterParameter=true}"/>

感谢。

1 个答案:

答案 0 :(得分:1)

由于你在编辑器中,关于使用正则表达式来解析xml的常见警告可以放宽(只有一点点)......

这将有效:

(?s)<TextBlock(?:(?!/>).)*?\bStyle=.*?/>

See demo

  • 诀窍是确保我们不会超过结束标记并最终匹配比我们想要的更多文本。
  • 如果有嵌套<tags>,则会失败

<强>解释

  • (?s)激活DOTALL模式,允许点跨行匹配
  • <TextBlock匹配文字字符
  • 非捕获组(?:(?!/>).)匹配一个字符,只要它不跟/>(这是为了避免跳出当前标记)
  • *?允许刚刚提到的角色类型懒洋洋地,零次或多次,最多......
  • \bStyle=文字Style=,左侧有\b,以确保Style中没有嵌入MyStyle
  • .*?懒惰地匹配字符......
  • 结束/>