Поиск всех фраз в коде Visual Studio с использованием Regex начинается и заканчивается данной фразой и переименовывает содержимое в нижний регистр в целом решении - PullRequest
0 голосов
/ 08 декабря 2018

Я хочу найти все места, которые начинаются с href=" и заканчиваются " Совпадения:

<li><a href="Blah/Index.html">Blah</a></li>
<li><a href="/blah/Index.html">Blah</a></li>
<li><a href="../Blah/index.html">Blah</a></li>
<li><a href="../Foo/Index.html">Foo</a></li>

Ожидаемый результат после переименования

<li><a href="blah/index.html">Blah</a></li>
<li><a href="/blah/index.html">Blah</a></li>
<li><a href="../blah/index.html">Blah</a></li>
<li><a href="../foo/index.html">Foo</a></li>

Мое выражение регулярного выражениякоторый я строю, не работает:

^href".*\."$

И я понятия не имею, возможно ли изменить все найденные вхождения на строчные, используя глобальный поиск в VS Code?Если это невозможно, можете ли вы дать мне какую-то альтернативу, пожалуйста?Приветствия

Ответы [ 2 ]

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

Регулярное выражение кода Visual Studio не поддерживает операторы изменения регистра в шаблоне замены.

В Notepad ++ вы можете использовать что-то вроде

Найти : (href=")([^"]*\.[^".]+)(") Заменить : $1\L$2\E$3

См. это демо .

Подробности

  • (href=") - группа 1: href=" подстрока
  • ([^"]*\.[^".]+) - группа 2:
    • [^"]* - 0+ символов, кроме "
    • \.- точка
    • [^".]+ - 1+ символов, отличных от " и .
  • (") - Группа 3: двойная кавычка.

Шаблон замены $1\L$2\E$3 вставляет обратно значение группы 1, затем оператор \L сообщает механизму регулярных выражений, что нужно включить нижний регистр, $2 вставляется в нижний регистр, \E останавливается в нижнем регистревывод, и $3 добавляет значение группы 3.

Если вам не нужно проверять, содержит ли значение href точку, регулярное выражение можно упростить до (href=")([^"]+)(").

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

Вы можете попробовать это

\bhref="([^>]*)

Пояснение

  • \b - Слово ограничено.
  • href=" Совпадения href=".
  • ([^>]+) - Совпадение с чем угодно один или более раз, кроме >.

Демо

Рабочий код демо

const regex = /\bhref="([^>]+)/gm;
const str = `<li><a href="Blah/Index.html">Blah</a></li>
<li><a href="/blah/Index.html">Blah</a></li>
<li><a href="../Blah/index.html">Blah</a></li>`;

let op = str.replace(regex,(match,p1)=>p1.toLowerCase());
console.log(op);

Ну, если вы хотите сделать замену, также vscode, вы можете выполнить следующее: -

  • Нажмите Ctrl + H .
  • Нажмите Alt + R .
  • Тип your regex.
  • Нажмите Tab и введите $ 1.
  • Нажмите Alt + Введите .
  • Нажмите F1 и введите ниже, затем нажмите Введите .
  • Нажмите Ctrl + Alt + Введите .
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...