【问题标题】:Regular Expression for Conditional Substitution of Angle Brackets角括号条件替换的正则表达式
【发布时间】:2009-09-29 23:17:25
【问题描述】:

是否可以在 Komodo Edit 中创建一个单一的正则表达式来将 替换为它们的实体等价物?

s/<|>/&lt;|&gt;/

【问题讨论】:

    标签: regex tags markup substitution komodoedit


    【解决方案1】:

    我猜你可能需要将&amp;amp; 转换为&amp;amp; 等等。

    如果是这种情况,则很可能存在您使用的任何语言/平台的库或函数(例如,在 Java 中,请查看 StringEscapeUtils)。指出您使用的语言,这里的某个人无疑会为您指出合适的内容。

    【讨论】:

      【解决方案2】:

      用几乎任何语言不使用正则表达式很容易做到这一点:

      PHP:

      $xml = str_replace(array('>', '<'), array('&gt;','&lt;'), $xml);
      

      Python:

      xml = xml.replace('>', '&gt;').replace('<','&lt;');
      

      等等

      【讨论】:

        【解决方案3】:

        您可以使用哈希变量,例如:

        my %data;
        $data{"<"} = '&lt;';
        $data{">"} = '&gt;';
        s/(<|>)/$data{$1}/g;
        

        【讨论】:

          【解决方案4】:

          这取决于您使用的语言。在 Perl 中,你可以这样做:

          s/([<>])/$1 eq '<' ? '&lt;' : '&gt;'/ge
          

          其他语言通常允许您提供返回替换字符串的匹配回调函数。也就是说:在 C# 中,您可以这样做:

          Regex.Replace("<", "([<>])", x => x.Value == "<" ? "&lt;" : "&gt;")
          

          【讨论】:

            【解决方案5】:

            谢谢大家。我正在寻找可以在Komodo Edit 中使用的东西,所以变量和条件语句不是一个选项。这是我找到的最佳解决方案,它基于IBM Developerworks 的 Sed 教程:

            s/<([^>]*)>([^<]*)<([^>]*)>/&lt;\1&gt;\2&lt;\3&gt;/
            

            【讨论】:

              【解决方案6】:

              在Komodo Edit 5.x 中,使用moreKomodo 扩展名保存以下查找/替换regex search:

              查找:

              <([^>]*)>([^<]*)<([^>]*)>
              

              替换:

              &lt;\1&gt;\2&lt;\3&gt;
              

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 2020-01-07
                • 2013-03-13
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2011-10-26
                • 1970-01-01
                相关资源
                最近更新 更多