python - 在 Perl 或 Python 中模拟类似 lex 的功能

标签 python perl parsing lex

这是交易。有没有办法根据多个正则表达式在一行中对字符串进行标记化?

一个例子:

我必须获取所有 href 标签、它们对应的文本以及基于不同正则表达式的一些其他文本。 所以我有 3 个表达式,想标记行并提取与每个表达式匹配的文本标记。

我实际上已经使用 flex(不要与 Adob​​e 混淆)完成了这项工作,它是旧 lex 的一个实现。 lex 提供 通过基于表达式执行“ Action ”来实现这一点的优雅方式。一个可以控制的方式 lex 也读取文件(基于 block /行的读取)。

问题在于 flex 实际上生成的 C/C++ 代码实际上执行标记化工作。我有一个 制作包含所有这些东西的文件。 我想知道 perl/python 是否可以以某种方式做同样的事情。只是我什么都愿意做 我喜欢单一的编程语言本身。

标记化只是我想在我的应用程序中做的事情之一。

除了 perl 或 python 之外,任何语言(也可以是函数式语言)都可以做到这一点吗?

我确实在这里读到了 PLY 和 ANTLR (Parsing, where can I learn about it)。

但是有没有办法在 python 本身中自然地做到这一点?请原谅我的无知,但这些工具是否用于任何流行的产品/服务?

谢谢。

最佳答案

CPAN 上查看以下模块的文档

HTML::TreeBuilder

HTML::TableExtract

Parse::RecDescent

我已经使用这些模块来处理相当大和复杂的网页。

关于python - 在 Perl 或 Python 中模拟类似 lex 的功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/160889/

相关文章:

perl + 从 perl 脚本返回代码 1

jQuery 和 XML(带有 CDATA)

java - 在Java中提取int的数字

python - Pandas - 如何从 Dataframe 中删除引号

python - 我在导入 tensorflow 时遇到异常

python - matplotlib 错误栏可以设置线条样式吗?

python - 用户输入值用作十进制值python

perl - 对于多个数组

windows - cpan 与 -MCPAN - Perl

java - 映射到列表转换