2010-08-09 50 views
4

我有一個C++源文件,它使用getMemberName()形式的函數返回成員數據。相反,我想使用memberName()。可記事本++將字符串匹配正則表達式轉換爲小寫?

爲了匹配需要更改函數名的情況下,我使用下面的正則表達式:

(\s+)get([A-Z]) 

的問題是,我不知道如何更換的\ 2實例與它的小寫版本。有沒有人有任何想法,或者我應該寫一個Perl腳本?

感謝,

扎克

回答

10

注意:此功能通過\L\1\E正則表達式替換模式在Notepad ++中可用。

  • \L
  • \2小寫用於匹配小寫脫落基團2
  • \E,如果你有任何進一步的替換。

Novices answernotepad++ wiki for details


,沒有像往常一樣,另一種方式。這可以在Notepad ++中使用PythonScript插件以及任何超出記事本++可用範圍的內容來完成,而無需編寫完整的插件。

首先,安裝在記事本++

插件>插件管理器>顯示插件管理器

檢查「的Python腳本」,在「可用」選項卡,然後單擊「安裝」,然後重新啓動記事本++

的PythonScript插件

然後設置一個Python腳本

PL ugins>的Python腳本>新建腳本

給它一個有用的名稱

添加以下代碼

# Start a sequence of actions that is undone and redone as a unit. May be nested. 
editor.beginUndoAction() 

# trimFunctionName - for editor.pysearch 
def trimFunctionName(index, match): 
    editor.pyreplace(match.re, match.group(1) + match.group(2).lower(), 1, 0, index, index) 

# I couldn't work out how to jam the .lower call into a editor.pyreplace() 
# so used editor.pysearch() to check the regex and run a function with match 
# information 
editor.pysearch(r'(\s+)get([A-Z])', trimFunctionName) 

# end the undo sequence 
editor.endUndoAction() 

然後運行該腳本。

插件>的Python腳本>腳本>「yourScript」

,您可以提示用戶輸入或做其他事情無數以scintilla與所提供的對象

+0

雖然這可以工作,就應該不再是公認的答案,因爲有一個內置的設備在N ++的發現改變的情況下/替換功能。 (請參閱下面的新手答案,雖然這可能不是最初發布這個答案時可能的。) – HitScan 2015-11-16 18:55:44

+0

維基的歷史可以追溯到那個時候,所以它可能已經存在。我已經添加了Novices詳細信息的更新。 – Matt 2015-11-17 06:30:41

2

是的,你應該寫一個Perl腳本。內置的正則表達式引擎功能不足以處理這樣的事情。

8

這是一個非常基本的HTML標籤轉換器(小寫):

左鍵點擊搜索 - >更換(或CTRL H)。

輸入相應的字段如下:

查找內容:<([^>]+?)>

替換:<\L\1>

左鍵點擊全部替換

完成

+0

謝謝,我需要更改爲大寫,並使用\ U \ 1 – appmaster 2015-03-17 20:08:30