Шаблон регулярных выражений Visual Studio не работает: ^. * Foo [^.,] \ (+. * $ - PullRequest
1 голос
/ 04 мая 2020

У меня есть следующие строки кода,

int Foo(char);

int Foo()
{
//do something
}

int FooBar(char, char);
foo.Get();
fooBar.Get();
m_FooBar.Get();
case foo:
fooBar(x,y);

Я хочу искать только ссылку на функцию, объявление и определение с именем 'Foo'. В результате должны быть показаны только четыре из приведенных выше строк

  1. int Foo (char);
  2. int Foo ()
  3. int FooBar (char, char);
  4. fooBar (x, y);

Я пытался

^.*Foo[^.,]\(+.*$

Но он также выбрал case Foo:

Что не так с этим регулярным выражением?

1 Ответ

1 голос
/ 04 мая 2020

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

^.*Foo\w*\(+.*$

Удостоверьтесь, что вы делаете это без учета регистра, как показано в этом демонстрационном примере регулярного выражения . Часть [^.,] является классом символов с отрицанием, и он соответствует любому символу, который не является точкой и запятой, он может соответствовать символу разрыва строки. При \w вы соответствуете только [A-Za-z0-9_] символов.

Подробности

  • ^ - начало строки (строка в текстовых редакторах)
  • .* - любые 0+ символов, кроме символов разрыва строки, максимально возможное количество
  • Foo - слово Foo
  • \w* - 0 или более буквы, цифры, _ s
  • \(+ - 1 или более ( символов
  • .* - любые 0+ символов, кроме символов разрыва строки, как можно больше
  • $ - конец строки (строка в текстовых редакторах).
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...