Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex:如何使用负前瞻排除搜索词前面或后面可能出现的特定字符 让我说我有C++类的Calimar。在cpp文件中,我会有一堆以CAnimal::XXX开头的定义,以及作为构造函数的CAnimal::CAnimal_Regex_Visual Studio - Fatal编程技术网

Regex:如何使用负前瞻排除搜索词前面或后面可能出现的特定字符 让我说我有C++类的Calimar。在cpp文件中,我会有一堆以CAnimal::XXX开头的定义,以及作为构造函数的CAnimal::CAnimal

Regex:如何使用负前瞻排除搜索词前面或后面可能出现的特定字符 让我说我有C++类的Calimar。在cpp文件中,我会有一堆以CAnimal::XXX开头的定义,以及作为构造函数的CAnimal::CAnimal,regex,visual-studio,Regex,Visual Studio,对于正则表达式,我希望搜索具有CANIAL但排除与类方法定义相关的所有内容的行 我想出了*CAnimal(?!::) 但是,这将显示任何构造函数(因为构造函数::CAnimal的后面部分后面不跟::) 所以我尝试使用*CAnimal.*(!::) 然而,这包括了我想象不到的一切 我怎么能在没有任何方法定义或构造函数的情况下搜索具有CANIAL的行呢 如果我有包含如下犬齿的线条 CAnimal Bob; CAnimal Cat; CAnimal::CAnimal() CAnimal::MoveSp

对于正则表达式,我希望搜索具有CANIAL但排除与类方法定义相关的所有内容的行

我想出了
*CAnimal(?!::)

但是,这将显示任何构造函数(因为构造函数::CAnimal的后面部分后面不跟::)

所以我尝试使用
*CAnimal.*(!::)

然而,这包括了我想象不到的一切

我怎么能在没有任何方法定义或构造函数的情况下搜索具有CANIAL的行呢

如果我有包含如下犬齿的线条

CAnimal Bob;
CAnimal Cat;
CAnimal::CAnimal()
CAnimal::MoveSpeed()
BEGIN_MESSAGE_MAP(CAnimal, CWinApp)
我只想提取

CAnimal Bob;
CAnimal Cat;
BEGIN_MESSAGE_MAP(CAnimal, CWinApp)

您可以尝试以下模式:
(?)

它使用负环视法:)


为什么不使用像clangs libtooling这样的工具,以便您可以实际搜索AST,而不是使用正则表达式进行原始文本搜索?主要是因为我从未接触过AST的概念。这是一种非常有趣的代码阅读方式。非常感谢你!我会调查的。@ShintaroTakechi
std::regex
不支持lookbehinds。您是否使用了
boost::regex
?@WiktorStribiżew此问题旨在将regex用于Visual Studio搜索功能。我提到C++是因为这是我正在搜索的特定文件,但我没有将正则表达式作为我的程序的一个功能来实现。如果看“前方”,我应该期待“后面”。谢谢