regex - 简单的 Perl 正则表达式解析器

标签 regex perl parsing

嘿,我正在开发一个非常基本的解析器。我几乎可以肯定我的正则表达式是正确的,但值似乎没有存储在我的 $1 中。和 $2 .难道我做错了什么?我只是在寻找改变我的代码的技巧。感谢您的任何建议!另外,我是 Perl 的新手,所以如果我做错了什么,我希望能正确地开始并养成良好的习惯。

来自文件的示例行:

Sat 02-August-2008 20:47 - 123.112.3.209 - "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1;

我只是从时代中获得时间。
foreach my $line (@lines)
{   
my $match =~ /\d\d-\w+-\d{4} (\d)(\d):\d\d/;

if( $1 == 0)
{
    $times[$2] = $times[$2] + 1;
}
else
{   
    my $time = $1.$2;
    $times[$time] = $times[$time]+ 1;
}
 }


print "\n";
for(my $i=0;$i<24;$i++)
{
print "$i: $times[$i]\n";
}

最佳答案

如果您想在 $line 上匹配代码不应该读

$line =~ /\d\d-\w+-\d{4} (\d)(\d):\d\d/;

See here .

关于regex - 简单的 Perl 正则表达式解析器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3697846/

相关文章:

.net - double.Parse 在 NaN 上失败

php - 如何从此正则表达式中删除空格、下划线 [^\w\xC0-\xFF]

Python 重新匹配如果不是子串

perl - 关于读取 50GB 文件(并将其重写为 16K 文件)的建议!

perl - perl 的每个功能都值得使用吗?

java - 如何解析文件

regex - 使用sed替换仅用引号引起来的文本

regex - 数字范围的正则表达式生成器

python - 将行转换为列

parsing - 什么时候可以使用二义性语法或产生式规则? ( Bison 转移/减少警告)