【问题标题】:find xaml text with regular expression使用正则表达式查找 xml 文本
【发布时间】:2014-06-26 05:57:37
【问题描述】:

如何使用Microsoft Visual Studio 中的搜索在包含Style 参数的xaml 文件中找到所有TextBlocks。是否可以在这里使用任何正则表达式?下面是一个block的例子:

<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}"/>

谢谢。

【问题讨论】:

  • 需要找什么?如果您详细说明目的,我们可以建议更短的方法

标签: c# regex wpf xaml


【解决方案1】:

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

这将起作用:

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

See demo.

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

说明

  • (?s) 激活 DOTALL 模式,允许点跨行匹配
  • &lt;TextBlock 匹配文字字符
  • 非捕获组(?:(?!/&gt;).)匹配一个字符,只要后面没有/&gt;(这是为了避免跳出当前标签)
  • *? 允许刚才提到的字符类型懒惰地进行零次或多次,最多...
  • \bStyle= 字面量Style=,左边有一个\b,以确保Style 没有嵌入MyStyle
  • .*? 懒惰地匹配最多...的字符
  • 结束/&gt;

【讨论】:

  • 仅供参考,添加了详细说明。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-16
  • 2017-08-07
  • 2016-01-12
  • 1970-01-01
相关资源
最近更新 更多