2012-12-17 26 views
3

我之前發佈了這個問題的簡化版本,但我想我可能已經簡化了它太多,所以這裏是實際的問題。正則表達式查找字符串中的字,用新字符串替換字(使用Notepad ++)

我想在下面的使用正則表達式(在記事本++或類似),找到「a_dog」(抱歉牆):

<object classid="clsid:D27CDB6E-AE6D-11cf" id="FlashID"> 
<param name="movie" value="../flash/words/a_dog.swf"> 
<param name="quality" value="high"> 
<param name="wmode" value="opaque"> 
<param name="swfversion" value="6.0.65.0"> 
<!--[if !IE]>--> 
    <object data="../flash/words/a_dog.swf" type="application/x-shockwave-flash"> 
    <!--<![endif]--> 
    <param name="quality" value="high"> 
    <param name="wmode" value="opaque"> 
    <param name="swfversion" value="6.0.65.0"> 
    <!--[if !IE]>--> 
    </object> 
<!--<![endif]--> 
</object> 

然後我想用一個向後引用替換所有實例與a_dog二OO如下:

<input type="button" class="ButtonNormal" onClick="audio_func_øø()"> 
<script> 
    function audio_func_øø() { 
    var playAudio = document.getElementById("element_øø"); 
    playAudio.play(); 
    } 
</script> 
<audio id="element_øø"> 
    <source src="../audio/words/øø.mp3" type='audio/mpeg'> 
    <source src="../audio/words/øø.wav" type='audio/wav'> 
</audio> 

所以只有第二碼左(有a_dog而不是OO),並沒有第一代碼的留下痕跡。

回答

4

我不知道如何在記事本++做到這一點,但你可以使用正則表達式,片段在SublimeText做到這一點,multiple selection

首先做出new snippet (guide)在它下面:

<snippet> 
    <content><![CDATA[ 

<input type="button" class="ButtonNormal" onClick="audio_func_$1()"> 
<script> 
    function audio_func_$2() { 
     var playAudio = document.getElementById("element_$3"); 
     playAudio.play(); 
    } 
</script> 
<audio id="element_$4"> 
    <source src="../audio/words/$5.mp3" type='audio/mpeg'> 
    <source src="../audio/words/$6.wav" type='audio/wav'> 
</audio> 

    ]]></content> 

    <!-- Optional: Set a tabTrigger to define how to trigger the snippet --> 
    <tabTrigger>audioSnippet</tabTrigger> 
</snippet> 

將它保存爲用戶包中的任何內容。如果您對如何保存它以及如何保存以使其正常工作有任何疑問,請按照鏈接的文章。我將在稍後討論它的工作原理。

下一頁使用崇高文字下面的正則表達式的(啓用正則表達式)使用以下方式查詢:

(?<=value="../flash/words/).+(?=\.swf) 

並點擊「查找全部」 - 這將選擇所有的名稱(如「a_dog」, 'a_cat','a_plane')使用multiple selection

  • 複製選定字(Ctrl+C或等效系統上)
  • 在菜單中,選擇 - >展開至第(這將選擇其中<object>開始,到端部</object>
  • 命中刪除/ Backspace鍵刪除程式碼中的快捷方式<object>
  • 型(上述我定義它是‘audioSnippet’),並按下Tab鍵
  • 粘貼在你複製的文本(Ctrl+V或相當於您的系統上)

您會注意到您只替換了$1出現的代碼段中的文本。您需要點擊Tab跳到$2,再次粘貼文本(Ctrl+V),然後重複,直到您到達製表符號$6

我做了一個屏幕截圖,你可以在這裏看看:http://youtu.be/oo2MQV3X244(在YouTube上公開的視頻)

+0

非常感謝,但我覺得我失去你的地方。我究竟搜索什麼?我是否要製作一份新文件並在其中粘貼我的代碼? (我試過這樣做,但找不到任何匹配) – Moogal

+0

我提供了一個視頻讓你看看。你將搜索正則表達式,它應該找到你想要的文本。在SublimeText中,你可以用'Ctrl + F'打開搜索菜單。 –

+0

神聖煙霧這看起來不錯!我還在掙扎,但我相信我很快就會明白。非常感謝 :) – Moogal