【问题标题】:regex find word in string, replace word in new string (using Notepad++)正则表达式在字符串中查找单词,在新字符串中替换单词(使用 Notepad++)
【发布时间】:2012-12-04 15:02:10
【问题描述】:

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

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

【问题讨论】:

    标签: regex notepad++ replace


    【解决方案1】:

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

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

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

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

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

    • 复制选定的字词(Ctrl+C 或您系统上的等效字词)
    • 在菜单中,Selection->Expand to Paragraph(这将选择&lt;object&gt; 开始的位置,&lt;/object&gt; 的结束位置)
    • 点击 Delete/Backspace 删除 &lt;object&gt;'s
    • 输入您的 sn-p 快捷方式(上面我已将其定义为“audioSnippet”)并点击 Tab
    • 粘贴复制的文本(Ctrl+V 或系统上的等效项)

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

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

    【讨论】:

    • 非常感谢,但我想我在某处失去了你。我到底要搜索什么?我是否制作一个新文档并将我的代码粘贴到那里? (我试过这样做,但找不到任何匹配项)
    • 我提供了一个视频供您观看。您将搜索应该找到所需文本的正则表达式。在 SublimeText 中,您可以使用 Ctrl+F 打开搜索菜单。
    • 天哪,这看起来不错!我仍然有点挣扎,但我相信我很快就会弄清楚。非常感谢:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-02-20
    • 2019-01-20
    • 1970-01-01
    • 1970-01-01
    • 2017-06-23
    • 1970-01-01
    相关资源
    最近更新 更多