Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/10.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 如何在Perl中提取字符串的一部分?_Regex_Perl - Fatal编程技术网

Regex 如何在Perl中提取字符串的一部分?

Regex 如何在Perl中提取字符串的一部分?,regex,perl,Regex,Perl,我有一个包含如下数据的输入文件: X-X-D-X-X-A X-D-X-A-X D-X-X-X-X-A-X-X 我只需要给我一个结果 D-X-X-A D-X-A D-X-X-X-X-A 请帮帮我 你可以试试 open my $fh, "<", "file" or die $!; while (my $line = <$fh>) { $line =~ s/^[-X]+ | [-X]+(?=\s*$)//xg; print $line; } close $fh; 你可

我有一个包含如下数据的输入文件:

X-X-D-X-X-A 
X-D-X-A-X
D-X-X-X-X-A-X-X
我只需要给我一个结果

D-X-X-A
D-X-A
D-X-X-X-X-A
请帮帮我

你可以试试

open my $fh, "<", "file" or die $!;
while (my $line = <$fh>) {
  $line =~ s/^[-X]+ | [-X]+(?=\s*$)//xg;
  print $line;
}
close $fh;
你可以试试

open my $fh, "<", "file" or die $!;
while (my $line = <$fh>) {
  $line =~ s/^[-X]+ | [-X]+(?=\s*$)//xg;
  print $line;
}
close $fh;
测试代码:

my @a = qw[
  X-X-D-X-X-A 
  X-D-X-A-X
  D-X-X-X-X-A-X-X
];

for my $a (@a) {
  if ($a =~ /(D[-X]+A)/) {
    print $1,"\n";
  }
}
测试代码:

my @a = qw[
  X-X-D-X-X-A 
  X-D-X-A-X
  D-X-X-X-X-A-X-X
];

for my $a (@a) {
  if ($a =~ /(D[-X]+A)/) {
    print $1,"\n";
  }
}
读取文件时在脚本内部执行以下操作:

while (my $line = <$fh>) {
  $line =~ m/[^D]*(D.*A).*/g;
  print $1;
}
正则表达式:

[^D]*D.*A*

[^D]*行不能以D开头 D.*A Captureround将从D到最后一个A的注视点支撑起来 线捕获的部分将存储在$1中 *行中剩余的字符串。 读取文件时在脚本内部执行以下操作:

while (my $line = <$fh>) {
  $line =~ m/[^D]*(D.*A).*/g;
  print $1;
}
正则表达式:

[^D]*D.*A*

[^D]*行不能以D开头 D.*A Captureround将从D到最后一个A的注视点支撑起来 线捕获的部分将存储在$1中 *行中剩余的字符串。
我假设不需要将模式硬编码为$s…数据可能是动态的!!:我假设不需要将模式硬编码为$s…数据可能是动态的!!:你能帮我提供一个关于如何使用“$line=~s/^[-X]+|[-X]+$//xg;”的详细代码吗举个简单的例子会很有帮助,它给我的结果是“A-X-X-X-X-X-D A-X-X-D D D A”,我只想提取起点为D,终点为A或A的字符串。我不希望结果包含单个D或A。同样的问题再次出现。。我仍然得到一个D和A,以及我要寻找的实际输出。我找到了问题所在。我的文件还包括X-D-X-X和X-A-X-X-X等行。。。我怎么能忽略这些单例呢?你能帮我提供一个关于如何使用“$line=~s/^[-X]+|[-X]+$//xg;”的详细代码吗举个简单的例子会很有帮助,它给我的结果是“A-X-X-X-X-X-D A-X-X-D D D A”,我只想提取起点为D,终点为A或A的字符串。我不希望结果包含单个D或A。同样的问题再次出现。。我仍然得到一个D和A,以及我要寻找的实际输出。我找到了问题所在。我的文件还包括X-D-X-X和X-A-X-X-X等行。。。我怎么能忽略这些单打呢?你好,维奈,你能为以上答案提供一个简短的代码吗。我对编程非常陌生,无法直接实现上述答案。在从txt文件获取输入时,如何使用此代码。?你好,Vinay,请提供上述答案的简要代码。我对编程非常陌生,不能直接实现上面的答案。如何在从txt文件获取输入时使用此代码。?