您好,登录后才能下订单哦!
Perl中如何使用文本处理模块,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。
Perl文本处理模块
Perl的主要目标之一是解析文本。这里主要讨论用于文本解析的CPAN模块,并展示了如何在程序中方便地使用它们。通过使用一些正确的工具,可以使分析代码注释、改编现有记载文法和许多其它任务变得容易。考虑到实际编程,给出了每个任务的示例。
Perl是用于文本分析的一种出色语言。内置的操作符使得文本搜索、替换和模式匹配轻而易举。
CPAN(综合Perl档案网络(ComprehensivePerlArchiveNetwork))汇集了大量模块,有些模块把编程从文本和数据分析的困境中解救出来。
◆Perl文本处理模块-将Perl模块用于解析、记载和分析
DamianConway开发的Parse::RecDescent是一个对文本进行记载和解析的功能强大的工具。KimRyan开发的Lingua::EN::Fathom可以分析一个文件或一个文本块,并产生有关其输入的各种统计信息。
Parse::RecDescent
缺点:
由于它使用可扩展文法规则并且实时地进行记载和解析,所以比较慢。如果没有正确使用该模块,性能就会降低。
优点:
擅长记载和解析。记载总是比任何其它工具更好地执行任务。
◆Perl文本处理模块-改编现有的记载文法
JohnHagerman的SwedishChef记载文法是出色的简单文本过滤器示例。它还非常有趣,会给许多计算机科学与工程专业的学生在毕业前夕带来欢乐。我将展示一个使用Parse::RecDescent模块将chef.l文法移植到Perl中的示例(Parse::RecDescent模块并不是实现这一任务的理想选择―Parse::Lex模块会更好些)。这一节只准备介绍构建Parse::RecDescent语法的规则,将包括操作、记忆状态、拒绝产品和对文本进行记载。请记住,自己试一试chef.pl脚本―您很可能会对此着迷。
chef.pl脚本几乎是chef.l记载文法完全一样的副本。$niw变量在启动时设置为0,因为许多规则测试它来判断它们应该被接受还是被拒绝。$niw表示“不在文字中(notinword)”,而当解析器在文字内时,它设置为1。如果Parse::RecDescent的伪指令中指定的变量非零,则该伪指令会拒绝该规则。因此,请牢记$niw=0意味着解析器不在文字内。
skip变量设置为''(空字符串),所以所有输入(包括空格)都转至标志伪指令。此外,chef规则以\z结束,\z表示字符串的结束。通常使用\Z,但那还可以匹配Perl中的换行,它们也都可以在输入中。
◆chef规则:文法以chef规则开始。chef规则匹配许多标志,直至表示字符串结束的\z。chef规则的那两个元素称为“产品”。任何规则都必须由产品组成。操作可以是产品的一部分;它由花括号{}标出,并包含Perl代码。它不匹配任何事物―操作仅用于执行。
◆token规则:token规则可以匹配任何数或序列,这些数和序列是我为匹配chef.1文法而指定的(有些随意)。我将说明一些示例,以便使文法对应清晰。
看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。