【问题标题】:regex search and replace with sub-loops(?)正则表达式搜索和替换子循环(?)
【发布时间】:2012-08-02 06:02:46
【问题描述】:

生日,

我是 regex 的新手,并试图节省转换垃圾 PDF“html”的时间,它已经用段落替换了所有列表项。使用 Dreamweaver CS6 或 notepad++ 我想知道是否我在应该是列表项的 p 标记周围手动添加 ul 标记,然后我是否能够使用列表项搜索/替换 ul 标记内的所有段落。

我一直在节省时间做以下事情:

Find: <p>Activity ([^>]*)</p>
Replace: <h2>Activity $1</h2>

Find: <p class="s23">([^>]*)</p>
Replace: <h3>$1</h3>

但我不知道是否可以在某个地方的正则表达式中循环,例如:

Find: *loop within ul* <p>([^>]*)</p>
Replace: <li>$1</li>

【问题讨论】:

    标签: regex search loops replace dreamweaver


    【解决方案1】:

    如果您了解什么是正则表达式,您会意识到仅使用正则表达式无法像循环一样进行流控制。引用Wikipedia:

    在计算中,正则表达式提供了一种简洁灵活的方法来“匹配”(指定和识别)文本字符串,例如特定字符、单词或字符模式。

    强调我的——简单地说,正则表达式是一种查找字符串的好方法;它要么匹配(匹配),要么不匹配。它不是一组具有可控流程的逻辑处理指令——即不是程序。

    但是,在单独使用正则表达式之后,还有其他方法可以实现您的目标,只要您使用支持“全部替换”(可能是给定的)以及multi-line matchescapture groups的编辑器正则表达式引擎。正在寻找

    (<ul>)(<p>.*</p>)?<p>([^<])*</p>(<p>.*</p>)?(</ul>)
    

    将匹配&lt;ul&gt;&lt;/ul&gt; 块内的any &lt;p&gt;&lt;/p&gt; 块,方法是允许任意数量的前面和后面的&lt;p&gt;&lt;/p&gt; 块,包括其中的0 个。假设您的反向引用语法是代码示例中的 $x,则替换字符串为

    $1$2<li>$3</li>$4$5
    

    – 替换所有出现的,你应该被设置。

    【讨论】:

      猜你喜欢
      • 2013-06-14
      • 2018-05-25
      • 2010-11-25
      • 2010-10-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多