2011-06-09 32 views
0

我有这么多正则表达式来重命名指针变量

代码片段:

int *filePointer; 
float *valPtr; 

*valPtr = 5.6; 

filePointer = ∑ 

我想替换所有指针变量如下,例如

  1. *文件指针必须转换为* filePointer_p。
  2. 必须将filePointer转换为filePointer。
  3. valPtr必须转换到valPtr_p

我如何使用正则表达式它做。

+0

什么是第二次转换呢? – blahdiblah 2011-06-09 17:47:28

+0

您是否试图重命名大块代码中的所有指针变量?如果是这样,正则表达式是一个不足的工具。你需要一个真正的语言解析器。没有可靠的方法让正则表达式查找'*指针'声明,然后重命名同一个指针的所有后续实例;此外,正则表达式无法检测变量何时超出范围。例如,'{int * filePointer;} {float filePointer;}'是有效的C或C++,但会打破任何理智的正则表达式。 – 2011-06-09 21:23:14

回答

2

这听起来像你可能会问如何使用正则表达式作为通用工具来重命名源代码中的所有指针变量。我假设提供的片段仅仅是一个例子。

如果我对您的目标的理解是正确的,那么使用正则表达式就无法做到这一点。如果变量是指针,则正则表达式无法从上下文可靠地确定。考虑一下,例如a=b;ab可能是指针,或者它们可能是最重要的。正则表达式本身无法确定。

0

对于1,请尝试s/\*filePointer/*filePointer_p/g

1

第一个阶段是:

s/\*filePointer/*filePointer_p/g 

不知道是什么,你是第二个?但如果你是基本退出重命名文件指针,那么你应该能够简单地做:

s/filePointer/filePointer_p/g 

的假设,有没有包含在不同的上下文中的文本filePointer任何其他变量或上下文。