以下HTML没有针对每个匹配的开始</dt>
标记的结束<dt>
标记。
例如<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=68924" ADD_DATE="1389093133">MSN Entertainment</A>
(此处缺少结束</dt>
)。
所以,我决定使用正则表达式添加结束标记。我可以编写模式来查找非封闭的<dt>
标签,如
<dt>
代码的regEx模式:
<DT><A HREF=".*</A>
正则表达式替换我使用前一个模式找到的结果</dt>
标记
<DT><A HREF=".*</A></DT>
但是我得到的结果是这个字符串<DT><A HREF=".*</A></DT>
,而不是只添加结束<dt>
标签,我找到了这个模式的所有字符串。
想要在我找到的模式的末尾添加</dt>
标记,无论是在IDE中还是通过javascript,我都可以。
HTML文件:
<DL>
<DT><H3 ADD_DATE="1389093133" LAST_MODIFIED="1423897474">Links for United States</H3>
<DL>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=129792" ADD_DATE="1389093133">GobiernoUSA.gov</A>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=129791" ADD_DATE="1389093133">USA.gov</A>
</DL>
<DT><H3 ADD_DATE="1389093133" LAST_MODIFIED="1423897474">MSN Websites</H3>
<DL><p>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=55143" ADD_DATE="1389093133">MSN Autos</A>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=68924" ADD_DATE="1389093133">MSN Entertainment</A>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=68923" ADD_DATE="1389093133">MSN Money</A>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=68921" ADD_DATE="1389093133">MSN Sports</A>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=54729" ADD_DATE="1389093133">MSN</A>
<DT><A HREF="http://go.microsoft.com/fwlink/?LinkId=68922" ADD_DATE="1389093133">MSNBC News</A>
</DL>
</DL>
答案 0 :(得分:2)
正则表达式替换字符串的一个功能是Backreferences,您可以在其中引用源字符串中字符串的一部分。
对于反向引用,您需要使用括号指定搜索字符串的一部分,然后您可以使用\n
模式进行反向引用,其中n引用n-th
组。
在下面的示例中,我们将所有搜索字符串放在括号中,使其成为我们可以反向引用的组。
(<DT>.*</A>$)
替换字符串:
\1</DT>
答案 1 :(得分:1)
实际上,要查找所有未关闭的FOR EACH jeld-wen.customer :
FIND FIRST adm2.order WHERE adm2.order.custnum = jeld-wen.customer.custnum NO-LOCK NO-ERROR.
IF AVAIL adm2.order THEN
DISP jeld-wen.customer.custnum adm2.order.custnum adm2.order.ordernum.
END
代码,您需要检查是否没有结束<DT>
代码,并且可以使用否定look-ahead来完成:
</DT>
替换为(<DT[^<]*><A HREF="[\s\S]*?<\/A>)(?!<\/DT>)
。添加$1</DT>
选项,我们会确保我们还会捕获i
个标记。
<dt>
也会捕获换行符。 [\s\S]*?
中的[^<]*
将确保我们还会使用属性捕获<DT[^<]*>
个标记。
请参阅demo。
示例代码:
<DT>