2015-08-23 55 views
0

例如,如果我在Notepad ++上編寫了*ggg*。我希望它替代奇數*Pl和偶數*Pk。也就是說,更換後,這將是:是否可以在記事本++成對搜索和替換符號?

PlgggPk

伯公廟所有文本。我怎樣才能做到這一點?目前,我發現只有一種方法可以替代所有的符號。

+0

更換* GGG *與PlgggPk? – Luc

+0

@Luc否,用'PlgggPk'替換'* ggg *'。問題是'ggg'可能是任何東西,例如,考慮下面的文本塊:'* gggg *是* www *'的最佳方式。我希望它能夠替換所有文本中的pairwise,而不管**中的內容。 –

+0

像使用正則表達式搜索'\ *([^ *] *)\ *'並用'Pl \ 1Pk'替換?我不確定這是否可以跨線運行,但現在我無法測試它,但是如果它不是這樣可以解決這個問題 –

回答

2

這可以使用正則表達式替換notepad ++來完成。 去替換對話框

查找:\ *(。*)\ *

替換:PL \ 1PK

搜索模式:正則表達式

+1

這將用'PLggg * hhhPK'替換'* ggg * hhh *',不是想要的。 '。*'是**貪婪*「,您需要使用」* non * greedy *「表達式或使用」*除*'*'「表達式之外的任何東西。 – AdrianHHH

+0

我認爲它也需要第一個並且最後一個'*'逃脫了。當我在記事本++中嘗試了'*(。*)*'時,我得到了一條正則表達式無效的消息。 –

1

正如我在你的問題的評論中提及這可以通過使用正則表達式進行搜索來完成。我現在有時間來驗證我建議的正則表達式。

在「查找內容」框中,輸入\*([^*]*)\* 這個由三個部分組成:

  • \*:與符號匹配*(該\脫星號,因爲它在正則表達式特殊含義);然後是
  • ([^*]*):除*以外的任何符號序列,將匹配的序列捕獲爲組1;其次是
  • \*:另一個符號*

在 「替換爲」 框中,輸入Pk\1Pl。該\1是兩個匹配*符號之間所捕獲的組1的基準,即,比* 其它符號的設置搜索模式爲「正則表達式」的順序,並且擊中全部替換

在接下來的輸入使用此:

* lorem * 
* ipsum 
dolor * 
* sit * amet * 
* 
* consectetur * adipisci * elit * 
** 

結果如下:

Pk lorem Pl 
Pk ipsum 
dolor Pl 
Pk sit Pl amet Pk 
Pl 
Pk consectetur Pl adipisci Pk elit Pl 
PkPl