Регулярное выражение с более чем одной (не) частью - PullRequest
0 голосов
/ 27 августа 2011

Я использую следующее регулярное выражение:

~(sizeof)\(<int|long>\)

для соответствия:

blah blah (int)variable blah blah
blah blah (long)variable blah blah

, но не:

blah blah sizeof(int) blah blah

Это все работает.Теперь я хочу, чтобы не соответствовало:

HMODULE (WINAPI *fnPtr)(int) = NULL;

, поэтому я попытался:

~(sizeof|fnPtr\))\(<int|long>\)

, но он все еще соответствует линии fnPtrКак мне изменить регулярное выражение, чтобы не соответствовало этой строке?

(я использую поиск по регулярному выражению в Visual Studio 2005.)

(у меня естьзначительно упростил регулярное выражение настолько, что часть int|long действительно int|long|..., где ... - это около 40 других типов.)

Edit:

Неважно, я решилЭто.Вам нужно сделать:

~(sizeof|(fnPtr.))\(<int|long>\)

, который заменит fnPtr\) на (fnPtr.), чтобы . соответствовал скобке, и чтобы . ассоциировалось с fnPtr.

1 Ответ

0 голосов
/ 27 августа 2011

Попробуйте это: [\w\s]+ \((int|long)\)[\w ]+

Вот демоверсия: http://regexhero.net/tester/?id=d18853f4-a737-4509-8c7b-babd0e9272d2

Примечание: Прочитайте мой комментарий к вашему посту. Это стандартное регулярное выражение, а не регулярное выражение VS. Вы можете принять его соответственно.

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