2012-03-15 48 views
2

有沒有人有emacs regexp方便地執行以下通用替換?Emacs用ptr_to_struct-> member_var替換(* ptr_to_struct).member_var

(*ptr_to_struct).member_var to ptr_to_struct->member_var 

其中ptr_to_struct任何指向struct和member_var任何成員變量

+0

你已經試過了什麼? – 2012-03-15 08:52:20

+0

我不認爲你需要一個正則表達式 – Antoine 2012-03-15 09:04:11

+0

'(* \ w +)。\ w +'大概就我所知 - regexps是* fiendish * – bph 2012-03-15 09:27:24

回答

3

你可以嘗試替代(\*\([a-zA-Z_][a-zA-Z_0-9]*\))\.\([a-zA-Z_][a-zA-Z_0-9]*\)\1->\2,其中:

[a-zA-Z_][a-zA-Z_0-9]*惹人C標識符

\( ... \)記錄的匹配替換

你可以用正則表達式在Emacs使用集成的正則表達式生成器玩:M-Xre-builder

+0

謝謝 - 來到一個類似的我自己的解決方案 – bph 2012-03-15 09:56:41

+0

@Hiett我編輯了我的答案,照顧包含數字的標識符 – 2012-03-15 10:01:07

+0

正要問你 - 你打敗了我 – bph 2012-03-15 10:06:02

1

使用替換字符串: M-x replace-string" + return/Enter key 那麼你應該輸入 「(* ptr_to_struct).member_var」 +返回/回車鍵 那麼你應該輸入 「ptr_to_struct-> member_var」 + reutrn /確認鍵

+2

嘿,我不是那麼愚蠢 - 我的OP不夠清楚 - 編輯它 – bph 2012-03-15 09:32:48