【发布时间】:2013-12-22 02:39:54
【问题描述】:
我一直在使用 regexpal 来测试我的正则表达式,但不明白为什么我现在正在测试的那个会失败。
我查阅了几个正则表达式教程和参考资料,但仍然没有看到任何可以解释我遇到这些问题的原因。
我正在测试的正则表达式是:
(<p>\s*(?:(?:<font[^>]*>)*?(?:<a[^>]*>)*?(?:<strong[^>]*>)*?(?:</font>)*?(?:</a>)*?(?:</strong>)*?[^<^>]*)*</p>)?\s*<ul>(.*?)</ul>
有效的数据是:
<p><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="#test1">test1</a> | <a href="#test2">test12</a></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif"><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="2"><strong>Production </strong><a name="prodSupport"></a></font></font></font></font><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2">stuff</font></strong> </font><a name="art"></a></p>
<ul>
<li><span style="font-family: Arial"><font size="1"><a id="Assistants" href="Assistants.aspx" name="Assistants">Assistants</a></font></span><font size="1"><a id="Assistants" href="Assistants.aspx" name="Assistants"></a></font></li>
</ul>
而行不通的数据是:
<p><font size="1" face="Verdana, Arial, Helvetica, sans-serif"><a href="#test1">test1</a> | <a href="#test2">test123</a></p>
<p><font face="Verdana, Arial, Helvetica, sans-serif"><font size="2"><font face="Verdana, Arial, Helvetica, sans-serif"><font size="2"><strong>Production </strong><a name="prodSupport"></a></font></font></font></font><font face="Verdana, Arial, Helvetica, sans-serif"><strong><font size="2">stuff</font></strong> </font><a name="art"></a></p>
<ul>
<li><span style="font-family: Arial"><font size="1"><a id="Assistants" href="Assistants.aspx" name="Assistants">Assistants</a></font></span><font size="1"><a id="Assistants" href="Assistants.aspx" name="Assistants"></a></font></li>
</ul>
为什么“test12”可以工作而“test123”不行?我完全糊涂了。
【问题讨论】:
-
您可能想发布您要转换的内容(起始文本和所需结果是什么)?从头开始编写一个正则表达式比用这样一个长的来确定问题更容易。 :)
-
起始点是:coj.net/departments/office-of-economic-development/… 以及捕获有时出现的类别标题(例如“制作艺术/道具”)的预期结果。正则表达式针对以下正则表达式的结果运行:
\s* (?:.*?)(? :]*>)?(.*?)(?:)?(?:.*?) (.*?) 跨度> -
以前有人问过,但你为什么不用合适的 HTML/DOM 解析器来解析这个?
-
正则表达式随着时间的推移比将其视为 XML 文档并使用 LINQ 更可靠。如果他们添加菜单或横幅或任何东西,XML 解决方案就会中断,而正则表达式搜索将一直有效,直到他们从根本上改变我所追求的数据格式。
-
当我尝试你的正则表达式时,这些字符串都不匹配。