我继承了一个网站,其中我必须更新大约3500个文件,每个文件的内容都非常95%(产品页面)。
为了进行一些更改,我使用Regex(在Dreamweaver中)进行批量编辑。
我已经把所有事情都搞定了,但我遇到了标签内容的问题。
我需要能够抓取该标签中的所有内容,并在我替换页面上的其他内容时将其保存(这是内容因页面而异的少数内容之一)。
以下是一个例子:
<ul>
<li style="padding-top:10px; text-align:right;"><a href="http://www.website.com/additem.wws?Sku=ABC123&sup=AAA&mfr=BBB&price=99.99&core=10.00&qty=1&description=ITEM">Single Item - $99.99 <img src="../../images/buy-now-button.gif" alt="Buy Now" width="50" height="20" border="0"> </a></li>
<li style="padding-top:10px; text-align:right;"><a href="http://www.website.com/additem.wws?Sku=ABC123-6&sup=AAA&mfr=BBB&price=299.99&core=60.00&qty=1&description=INJECTOR"><strong>Set of 6 Items - $299.99</strong> <img src="../../images/buy-now-button.gif" alt="Buy Now" width="50" height="20" border="0"> </a></li>
<li style="padding-top:10px"><img src="../../images/free_shipping.jpg" alt="Free Upgrade." width="227" height="107"> </li>
</ul>
我会更加个性化,并在单个<li>
标签中获取内容,但问题是某些网页在<li>
内只有一个<ul>
,或者最多6个关于该页面上的产品变化数量。
所以我的整体问题是:如何获取给定标记内的所有内容(包括新行,其他标记等),并在需要替换其余内容时保存它?我知道如何在内容周围使用括号,然后在替换部分使用$#。
到目前为止,我所使用的网站规模要小得多,而且我对Regex并不太需要,因为通常更容易手动更改或仅使用查找/替换中的文字文本。
答案 0 :(得分:7)
这些网页有多复杂?如果<ul>
元素永远不会嵌套在其他<ul>
元素中,并且您不必处理内部的伪造标记(例如)SGML注释或CDATA部分,这可能就是您所需要的:
<ul>[\s\S]*?</ul>
[\s\S]
是如何在JavaScript正则表达式中匹配任何字符,包括换行符(这是Dreamweaver使用的,或者我已经阅读过)。
*?
告诉它匹配零或更多,不情愿 - 这意味着一旦正则表达式的下一部分(</ul>
)匹配,它就会退出匹配。