[英]How to Replace Text Surrounding Text in Notepad++'s Regular Expression Finder Dialog?
此問題與其他正則表達式notepad ++問題相反。 除了替換文本之間的文本,我還需要替換周圍的文本,如下所示:
從
$ _REQUEST [' 操作 ']
至
getReq(' action ')
所以:
我希望將$_REQUEST(
替換為getReq(
,同時將]
替換為)
。
如何在Notepad ++中實現呢? 有超過1000個匹配,我想替換所有匹配,不僅僅是具有動作索引的匹配,還有更多!
您仍然想要匹配,只想與捕獲匹配(記事本支持此操作,請確保已在搜索和替換中選中了正則表達式。()是捕獲組,第一個順序(是捕獲組號。(?: )可用於使群組不被捕獲)
匹配\\$_REQUEST\\['([^']*)'\\]
將捕獲替換為getReq\\('$1'\\)
編輯:在記事本中,由於某種原因,您必須在替換部分中轉義()
您需要在正則表達式中使用捕獲組 。 在大多數正則表達式引擎中,捕獲組用括號表示,可能在前面用反斜杠轉義:
foo(capturing_group)bar
foo\(capturing group\)bar
我認為Notepad ++使用PCRE,因此它應該是空白的(上面的第一個示例)。
您擁有的是更大的模式:
$_REQUEST['some variable text goes here']
您想用替換
getReq('some variable text goes here')
捕獲組將“捕獲”(或“保存”)變量文本,對該組的向后引用將在替換中“插入”文本:
$_REQUEST['([^']*)']
getReq('\1')
搜索將查找外部文本$_REQUEST['
和']
,再加上一個捕獲組(
... )
其中包含[^']*
任意數量的非單引號字符。
替換將是外部替換文本getReq('
和')
,再加上對原始匹配中第一個(也是唯一的!)捕獲組的反向引用。 \\1
被替換為第一組括號內的所有內容。
僅供參考:分組通常通過計算左括號來編號。 因此,這樣的嵌套組: ( ( ) ) ( ( ) )
將被編號為(1 (2 ) ) (3 (4 ) )
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.