Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 如何在<;之间grep文本和数字&燃气轮机;括号_Regex_Perl_Grep - Fatal编程技术网

Regex 如何在<;之间grep文本和数字&燃气轮机;括号

Regex 如何在<;之间grep文本和数字&燃气轮机;括号,regex,perl,grep,Regex,Perl,Grep,我是Perl新手,不知道您能否帮我查询一下 我试图从一个文本文件中找出括号中的文本和数字的精确序列 代码如下: open (FILE1, "file.txt") or die ("Error: File cannot be found"); @file1 = <FILE1>; @file2 = join(' ', @file1); my @grabJustTheHVSection = grep { $_ =~ /\<HV\>.*\<\\HV\>/s} @

我是Perl新手,不知道您能否帮我查询一下

我试图从一个文本文件中找出括号中的文本和数字的精确序列

代码如下:

open (FILE1, "file.txt") or die ("Error: File cannot be found"); 
@file1 = <FILE1>; 
@file2 = join(' ', @file1); 
my @grabJustTheHVSection = grep { $_ =~ /\<HV\>.*\<\\HV\>/s} @file2; 
close(FILE); 
open(FILE1,“file.txt”)或die(“错误:找不到文件”);
@file1=;
@file2=join(“”,@file1);
my@grabjusthehvsection=grep{$\u=~/\.\.\/s}@file2;
关闭(文件);
我希望数组@grabjusthehv节仅包含file1.txt中的以下内容:
00000000 00000010 00000100 00001000 00000000 00100000 00000000 00000010 00000100 00001000 00000000 00100000

更多示例代码:

@file2  = join('', @file1); 
my @replace = grep { $_ =~ /\<HV>/g } @file2;
foreach $_ (@replace){
    if($_ !~ m/.PDT>/g){
    s /<HV>/<PDT>/g;
    s /<\\HV>/<\\PDT>/g;
    (print NEW $_) or die "Cant write to $new: $!";
    }
@file2=join(“”,@file1);
my@replace=grep{$\u=~/\/g}@file2;
foreach$(@replace){
如果($\!~m/.PDT>/g){
s///g;
s///g;
(打印新美元)或“无法写入新美元:$!”;
}

谢谢

如果这是某种标记语言,您可能应该改用解析器。
中的“反向”反斜杠似乎表示其他内容,但可能是打字错误

无论如何,您可以使用。要点是,在两个条件之间,触发器返回true,否则返回false

use strict;
use warnings;
use Data::Dumper;

chomp(my @file = <DATA>);

my @HV = grep /<HV>/ .. /<\\HV>/, @file;
print Dumper \@HV;

__DATA__
foo
<HV>
00000000 00000010 00000100 00001000 00000000 00100000
00000000 00000010 00000100 00001000 00000000 00100000
<\HV>
bar
使用严格;
使用警告;
使用数据::转储程序;
chomp(my@file=);
我的@HV=grep/../、@file;
打印转储\@HV;
__资料__
福
00000000 00000010 00000100 00001000 00000000 00100000
00000000 00000010 00000100 00001000 00000000 00100000
酒吧
输出:

$VAR1 = [
          '<HV>',
          '00000000 00000010 00000100 00001000 00000000 00100000',
          '00000000 00000010 00000100 00001000 00000000 00100000',
          '<\\HV>'
        ];
$VAR1=[
'',
'00000000 00000010 00000100 00001000 00000000 00100000',
'00000000 00000010 00000100 00001000 00000000 00100000',
''
];

缺少
使用警告;使用严格;
。使用词汇变量,而不是裸字文件句柄。使用3-arg打开,而不是2-arg打开。在错误消息中包括
$!
和文件名。不要无故使用全局变量。
$。
是多余的。
不需要转义。不要“解析”带有正则表达式的XML。欢迎使用SO和Perl。始终使用
use strict;使用warnings;
请发布您收到的错误。
join
返回字符串;将其存储在数组中没有意义。类似地,单个字符串上的
grep
也没有意义:它将返回该字符串(如果匹配的话),或什么都没有。为什么要将结果存储在数组中?元素是什么?是否确实希望
包含反斜杠,而不是X/HTML样式的正斜杠