正则表达式搜索和替换子循环(?)

时间:2012-08-02 06:02:46

标签: regex search loops replace dreamweaver

天儿真好,

我是正则表达式的新手,并试图节省时间转换垃圾PDF“html”已用段落替换所有列表项。使用Dreamweaver CS6或记事本++我想知道我是否在应该是列表项的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>

1 个答案:

答案 0 :(得分:2)

如果您看一下正则表达式是什么,您将意识到不可能像仅使用正则表达式那样进行流控制。引用Wikipedia

  

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

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

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

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

将匹配<p></p>块内的任何 <ul></ul>块,方法是允许任意数量的前后<p></p>块,包括其中的0。假设您的代码示例中的反向引用语法为$x,替换字符串将为

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

- 替换所有出现,你应该设置。