如何在UE中编写正则表达式来实现这一要求?

时间:2013-07-17 09:09:25

标签: regex ultraedit

现在我有一个大型的C ++项目,它由大约1400k行代码组成。现在我有一个要求:为每个类添加一行代码,该代码派生自CDialog,CWnd或CListCtrl。我不可能手动执行此操作。我想也许UltraEdit正则表达式可以帮到我,但我不能自己编写相关的正则表达式。

任何人都可以帮助我?

以下是要添加的代码行:

virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}

这是我的代码结构(仅用于说明):

class CRibbonAddPlaceDialog : public CDialog
{
    DECLARE_DYNAMIC(CRibbonAddPlaceDialog)

public:
    CRibbonAddPlaceDialog();
    virtual ~CRibbonAddPlaceDialog();
    enum { IDD = IDD_RIBBON_ADDPLACE };

protected:
    virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}//the line to add
    virtual void DoDataExchange(CDataExchange* pDX);
    DECLARE_MESSAGE_MAP()
    afx_msg int OnCreate(LPCREATESTRUCT lpCreateStruct);
    afx_msg void OnDestroy();
    virtual BOOL OnInitDialog();
    virtual BOOL OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo);
public:
    BOOL AddButton(CFX_WideString csTitle, AddPlaceButtonProc proc, void* pClientData, CFX_DIBitmap* pButtonImage);
public:

    CReader_RibbonFilePageManager* m_pRibbonFilePageMgr;
    CReader_RibbonStyle_Static*       m_pAddPlace;
    CReader_RibbonStyle_Static*       m_pAddPlaceTip;
    CTypedPtrArray<CPtrArray, buttondata*> m_arButtonData;
    CTypedPtrArray<CPtrArray, CBCGPButton*>m_arButton;

};

2 个答案:

答案 0 :(得分:3)

假设您想在开场{之后立即放置该行,请尝试搜索(打开Perl正则表达式):

^(class\b.*\bC(?:Dialog|Wnd|ListCtrl).*\r?\n\{\r?\n)

并替换为

\1virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}\r\n

答案 1 :(得分:1)

perl -ibak -pe "s/protected:\n/protected:\n virtual ULONG GetGestureStatus(CPoint ptTouch) { return 0;}/" file_name