Найти класс с методами с тем же именем - PullRequest
0 голосов
/ 30 октября 2018

Я пытаюсь найти в коде Visual Studio файлы, содержимое которых имеет класс с методами с одинаковыми именами. Например, следующее содержимое должно соответствовать:

class Hello {
    ...
    function Hello() { ... }
    ...
}

В любом случае я попытался сделать регулярное выражение для этого class\s([A-Za-z_]+)[^]*(function\s\1), и, похоже, оно работает нормально. Когда я пытаюсь найти файл в коде Visual Studio, выдается сообщение об ошибке: «Обратные ссылки не допускаются».

Есть ли простой способ сделать то, что я хочу здесь? У меня плохо сформировано регулярное выражение?

1 Ответ

0 голосов
/ 30 октября 2018

Вы должны заменить [^] на [\s\S\r].

Шаблон, который должен работать:

class\s([A-Za-z_]+)[\s\S\r]*(function\s\1)

Или, возможно, более точная версия:

class\s+([A-Za-z_]+)\b[\s\S\r]*?(function\s+\1\b)
       ^            ^^         ^              ^^

информация

  • class - буквальная подстрока
  • \s+ - 1 или более пробелов
  • ([A-Za-z_]+) - Группа 1: 1 или более букв или _
  • \b - граница слова
  • [\s\S\r]*? - любые 0 или более символов как можно меньше
  • (function\s+\1\b) - группа 2: fuinction, пробелы 1+, значение группы 1 и граница слова.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...