найти текст xaml с регулярным выражением

1

Как я мог бы найти все TextBlocks в XAML файлы, которые содержат Style параметр, используя поиск в Microsoft Visual Studio. Можно ли использовать какое-либо regexp здесь? Вот пример блока:

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

Благодарю.

  • 0
    Что нужно найти? Если вы уточните цель, мы можем предложить более короткий путь
Теги:
xaml
wpf

1 ответ

1
Лучший ответ

Поскольку вы находитесь в редакторе, обычные предупреждения об использовании регулярного выражения для синтаксического анализа xml можно смягчить (только немного)...

Это будет работать:

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

См. Демонстрацию.

  • Трюк заключается в том, чтобы убедиться, что мы не пройдем мимо закрывающего тега и в итоге получим больше текста, чем мы хотим.
  • Если есть вложенные <tags>, это не удастся

объяснение

  • (?s) активирует режим DOTALL, позволяя точке совпадать по линиям
  • <TextBlock соответствует литеральным символам
  • Нехватывающая группа (?:(?!/>).) Соответствует одному символу, если за ним не следует /> (это необходимо, чтобы избежать выскочки из текущего тега)
  • *? позволяет тип персонажа, о котором только что упоминалось, лениво, ноль или более раз, до...
  • \bStyle= буквальный Style=, с \b слева, чтобы гарантировать, что Style не встроен в MyStyle
  • .*? лениво соответствует символам до...
  • закрытие />
  • 0
    Рад, что это работает, спасибо! :) Добавлю пояснения.
  • 0
    К вашему сведению, добавлено подробное объяснение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню