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 如下:

<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 而不是 øø),并且没有留下第一个代码的痕迹。

4

1 回答 1

4

我不知道如何在 Notepad++ 中执行此操作,但您可以在SublimeText中使用正则表达式、片段和多项选择来执行此操作:

首先制作一个新的片段(指南),其中包含以下内容:

<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>

将其保存为您的用户包中您喜欢的任何内容。如果您对如何/在何处保存以使其正常工作有任何疑问,请按照链接的文章。稍后我将讨论这是如何工作的。

接下来通过使用以下模式搜索(启用正则表达式)在 Sublime Text 中使用以下正则表达式:

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

并点击“查找全部” - 这将使用多项选择选择所有名称(例如“a_dog”、“a_cat”、“a_plane”)。

  • 复制选定的单词(Ctrl+C或系统上的等价词)
  • 在菜单中,Selection->Expand to Paragraph(这将选择从哪里<object>开始,到哪里</object>结束)
  • 点击 Delete/Backspace 删除<object>'s
  • 输入您的片段快捷方式(上面我已将其定义为“audioSnippet”)并点击 Tab
  • 粘贴复制的文本(Ctrl+V或系统上的等效文本)

您会注意到您只替换了$1出现的片段中的文本。您需要按 Tab 键跳转到$2,再次粘贴文本 ( Ctrl+V),然后重复直到到达制表位$6

我制作了一个屏幕截图,您可以在这里查看:http: //youtu.be/oo2MQV3X244(YouTube 上的未列出视频)

于 2012-12-17T15:27:59.673 回答