Perl 6 - 正则替换

作者: 焉知非鱼 | 来源:发表于2016-03-28 22:23 被阅读19次

想把 Desgin Perl 6 中的 pod/html 转为 Markdown 格式, Perl 6 的 pod2markdown 不能用, 只能下载 html 格式的了, 然后用 pandoc test.html -o result.markdown 转换了, 但是也不理想, 里面还有很多 html 标签, 写个脚本批量替换下吧。
token 中的空白要显式地使用 \s\h\t 等表示, rule 中 :sigspace 是开启的。程序很丑, 仅仅是记录一下。


use v6;

my rule r1 {'<'span id\='"'line_\\d+'"''>''<''/'span'>' '<'span id\='"'line_\\d+'"''>''<''/'span'>'( '<'span)?$}
my rule r2 {id\='"'line_\d+'"''>''<''/'span'>' '<'span id\='"'line_\d+'"''>''<''/'span'>'( '<'span)?$}
my rule r3 {^id\='"'line_\d+'"''>''<''/'span'>'$}
my rule r4 {'<'div class\='"'smartlink'"''>'}
my rule r5 {'<''/'div'>'}
my rule r6 {'<'div class\='"'indexgroup'"''>'}
my rule r7 {'<'span id\='"'__top'"''>''<''/'span'>'}
my token r8 {^  \s* '<'span$}
my rule r9 {^id\='"'line_\d+'"''>''<''/'span'>' '<'span id\='"'line_\d+'"''>''<''/'span'>'$}
my rule r10 {id\='"'line_\d+'"''>''<''/'span'>' '<'span id\='"'line_\d+'"''>''<''/'span'>'(\s'<'span)?$}
my token r11 {^ \s* id\='"'line_\d+'"''>''<''/'span'>'}
my token r12 {^ \s* '<' span \s $}

for dir(test => /.markdown$/) -> $file  {
    my $f = $file;
    $f ~~ s/.markdown//;
    my @lines = $file.lines;
    my $out = open $f ~ ".md", :w;
    for @lines -> $line is rw {
        $line ~~ s/<r1>//;
        $line ~~ s/<r2>//;
        $line ~~ s/<r3>//;
        $line ~~ s/<r4>//;
        $line ~~ s/<r5>//;
        $line ~~ s/<r6>//;
        $line ~~ s/<r7>//;
        $line ~~ s/<r8>//;
        $line ~~ s/<r9>//;
        $line ~~ s/<r10>//;
        $line ~~ s/<r11>//;
        $line ~~ s/<r12>//;
        $out.say($line);
    }
    $out.close;
}

相关文章

  • Perl 6 - 正则替换

    想把 Desgin Perl 6 中的 pod/html 转为 Markdown 格式, Perl 6 的 po...

  • 【Perl编程-6】正则表达式--匹配

    perl语言的强大之处就在于他的正则表达式,Perl的正则表达式的三种形式,分别是匹配,替换和转化: 匹配:m//...

  • 【Perl编程-6】正则表达式--替换+转化

    替换操作符 替换操作符 s/// 是匹配操作符的扩展,使用新的字符串替换指定的字符串。基本格式如下:s/PATTE...

  • 4.Perl、数据库

    2019.10.15 勤奋,很好的研究,更好的生活。 Perl 变量、循环、替换 #!/usr/bin/perl ...

  • Effective Perl-chapter3

    今天这个主要是介绍perl语言中的正则表达式,perl的正则表达式本身就相当于一门语言,而且这门语言甚至比perl...

  • R 正则表达式

    前言 R中的正则表达式模式有三种 1、扩展正则表达式:默认方式 2、Perl风格正则表达式:设置参数perl = ...

  • centos系统下安装nginx

    1、pcre是一个perl库,包括perl兼容的正则表达式库,nginx的http模块使用pcre来解析正则表达式...

  • 模式匹配和 Unpacking

    模式匹配和 Unpacking 当在 Perl 6 中讨论模式匹配时,人们通常会考虑正则表达式或 Grammar。...

  • vscode统计代码行数

    vscodectrl+shift+f搜索 并勾上正则 去掉空行 正则搜索并直接替换 去掉注释行 正则搜索并直接替换...

  • Perl 6 .rotor - 列表操作之王

    Perl 6 .rotor - The King of List Manipulation 对于 Perl 6 程...

网友评论

    本文标题:Perl 6 - 正则替换

    本文链接:https://www.haomeiwen.com/subject/onajlttx.html