正则表达式在字符串中查找单词,替换新字符串中的单词(使用Notepad ++)

时间:2012-12-17 13:53:14

标签: regex notepad++ replace

之前我发布了这个问题的简化版本,但我想我可能已经简化了太多,所以这是实际问题。

我想使用正则表达式(在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而不是øø),并且没有第一个代码的痕迹。

1 个答案:

答案 0 :(得分:4)

我不知道如何在Notepad ++中执行此操作,但您可以使用正则表达式,代码段和SublimeTextmultiple 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>

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

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

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

点击“全部查找” - 这将使用multiple selection选择所有名称(例如“a_dog”,“a_cat”,“a_plane”)。

  • 复制所选单词(Ctrl+C或同等系统)
  • 在菜单中,选择 - >展开到段落(这将选择<object>开始的位置,</object>结束的位置)
  • 点击删除/退格键删除<object>
  • 输入您的代码段快捷方式(上面我将其定义为“audioSnippet”)并点击Tab
  • 粘贴复制的文本(Ctrl+V或您系统上的同等文件)

您会注意到,您只更换了显示$1的代码段中的文字。你需要点击Tab跳转到$2,再次粘贴文本(Ctrl+V),然后重复,直到你到制表位$6

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