Matlab正则表达式查询

时间:2014-10-27 22:50:17

标签: html regex matlab

对正则表达式来说很新,并没有找到一个描述性的解释来缩小我对正则表达式的理解,以便让我找到解决方案。

我使用一个脚本从雅虎财务中删除html脚本以获取财务选项表数据。雅虎最近更改了他们的HTML代码,旧算法不再有效。旧表达如下:

Main_Pattern = '.*?</table><table[^>]*>(.*?)</table';
Tables = regexp(urlText, Main_Pattern, 'tokens');

Tables用于返回数据的位置,不再存在。对HTML的HTML检查告诉我,数据不再在<table>中,而是在<tbody> ...

我的问题是“Main_Pattern正则表达式在外行人的意义上是什么意思?”我正试图想出如何修改该表达式,使其适用于当前的HTML。

1 个答案:

答案 0 :(得分:1)

虽然我同意@Marcin和正则表达式最好通过做和利用the reference of your chosen tool来学习,但我会尝试分解其正在做的事情。

  1. .*?</table>:匹配第一个</table>文字的所有内容(由于?,这是一个懒惰的表达式。)

  2. <table:匹配此字面值。

  3. [^>]*>:尽可能匹配从>字面值到最后一次出现的满足<table >的{​​{1}} ? *其余的表达式(这是一个贪婪的表达式,因为(.*?)</table之后没有>

  4. </table:匹配并捕获上一部分'tokens'regexp字面之间的任何内容;可以使用'match'的{​​{1}}选项检索捕获的内容(您还可以使用{{1}}选项获取匹配的整个字符串。)

  5. 虽然我把它分成了碎片,但我想强调整个表达本身就是一个整体,这就是为什么有些部分引用了前面的部分。

    有关上述内容的更深入说明,请参阅MATLAB文档的Operators and Characters部分。



    对于未来,更强大的选项可能是使用MATLAB的xmlread和DOM对象来遍历表节点。 我确实理解这是要学习的另一个 API,但对于未来可能更易于维护。