Regex в Visual Studio найти и заменить не работает - PullRequest
0 голосов
/ 03 декабря 2018

Попытка использовать поиск и замену в Visual Studio 2017.

Кажется, он отлично работает на инструменте проверки Regex, который включен, но не работает в Visual Studio, когда я выполняю поиск Find (Ctrl + F).

Есть идеи, почему это может быть?Нужно ли что-то делать по-другому в VS по сравнению со стандартным Regex?

Вот Regex:

([.material\-icons]+[a-z|A-Z|\-|\_]+:+before,)

Вот пример набора кода / текста:

.material-icons.three-d-rotation:before,
.icon-mi-three-d-rotation:before {
    content: '\e84d';
}

.material-icons.ac-unit:before,
.icon-mi-ac-unit:before {
    content: '\eb3b';
}

Предполагается найти

.material-icons.three-d-вращение: перед,

и

.material-icons.ac-unit: before,

1 Ответ

0 голосов
/ 03 декабря 2018

Вы должны удалить обратную косую черту до того, как _, \_ сделает синтаксис регулярных выражений .NET недействительным.

Кроме того, если вам нужно сопоставить последовательность символов, а не символы в любом другом порядке и любой сумме, вы должны использовать простую последовательность этих символов, не помещая их в класс персонажа.Измените [.material\-icons]+ на \.material-icons.

Обратите внимание, что - вне класса символов (вне [...]) не нужно экранировать.

Внутри класса символов | соответствует символу канала, это неоператор ИЛИ.Таким образом, вы должны удалить его из [...].

Нет необходимости заключать весь шаблон в круглые скобки, если вам нужно заменить все совпадение, используйте заполнитель $&.

Вы можете использовать

\.material-icons\.[\w.-]+:+before,

enter image description here

Подробнее

  • \.material-icons\. - aлитерал .material-icons. текст
  • [\w.-]+ - 1 или более букв, цифр, _, . или -
  • :+ - 1+ двоеточий
  • before, - буквальная подстрока.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...