【问题标题】:text parsing in perl [closed]Perl中的文本解析[已关闭]
【发布时间】:2013-10-12 03:06:08
【问题描述】:

我在这里有 2 种不同的文本格式。

"Submitted on Oct 1st, 2013"
"Not started" 

我想去掉状态和日期。

预期结果是:

$status = "Submitted" or "Not started"
$date = "Oct 1st, 2013"

如何在Perl 中进行操作。非常感谢。

【问题讨论】:

  • 如果状态为“未启动”,$date 将如何初始化?也就是说,不是只有$status是“提交”才有日期吗?
  • 我看到您在问题中包含了html 标签。如果您打算在使用 Perl 解析 HTML 方面做很多事情,您可能需要阅读 this answer
  • 如果您完全不知道如何解决这个问题,那么您需要一个基础 Perl 教程。使用谷歌在互联网上查找;有许多。如果您知道足够的 Perl 来尝试它,那么请这样做并显示您的代码。我们将帮助您修复它。 Stack Overflow 的存在是为了在有经验的程序员遇到困难时为他们提供帮助,而不是作为教学服务或免费源代码。
  • 你误解了我的问题。我想问用哪个工具来查找它并自己做。这是更有效地学习的方法。我没有专门要求代码。有很多不同的方法可以解决问题。不要评判别人。我认为你会做同样的事情来自己学习一门新的编程语言。谢谢。

标签: html perl parsing text


【解决方案1】:

如果您可以假设在日期之前总是有“on”这个词,那么这就是执行此操作的代码。

#!/usr/bin/perl

use strict;
use warnings;

chomp(my $input = <STDIN>);

my $status = "Not started";
my $date;

if ($input =~ / on /) {
    $date = $';
    $status = "Submitted";
}

print "Status: $status\n";
if (defined $date) {
    print "Date: $date\n";
}

【讨论】:

    【解决方案2】:

    从单个 RegEx 开始的方法。处理意外输入。

    #!/usr/bin/perl -w
    
    use strict;
    use warnings;
    
    my ($match, $status, $date);
    foreach (<DATA>) {
    
        $_ =~ /^"(Submitted)(?: on )(.*)"|(Not started)"/;
    
        #         ^^^^^^^^^          ^^    ^^^^^^^^^^^
        #            $1              $2        $3
    
        if (defined $1) {
            ($match, $status, $date) = ("Y", $1, $2);
        } elsif (defined $3) {
            ($match, $status, $date) = ("Y", $3, "-");
        } else {
            ($match, $status, $date) = ("N", "-", "-");
        }
    
        print "[", join("][", ($match, $status, $date)), "]\n";
    }
    
    __DATA__
    "Submitted on Oct 1st, 2013"
    "Not a match!"
    "Not started"
    

    这个程序产生输出:

    [Y][Submitted][Oct 1st, 2013]
    [N][-][-]
    [Y][Not started][-]
    

    【讨论】:

      猜你喜欢
      • 2013-06-03
      • 1970-01-01
      • 1970-01-01
      • 2011-05-10
      • 2013-10-28
      • 1970-01-01
      • 1970-01-01
      • 2012-10-09
      • 1970-01-01
      相关资源
      最近更新 更多