2011-06-09 27 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任何其他變量或上下文。