我有一个数据输入文件象下面这样:如何在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
请帮助我!
我有一个数据输入文件象下面这样:如何在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;
或CMD线,
perl -pe 's/^[-X]+ | [-X]+(?=\s*$)//xg' file
测试代码:
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";
}
}
我假设硬编码模式,因为不需要'$ s' ....数据可能是动态的! :) – NoobEditor
只是一个例子! – Pradeep
perl -lne 'print $1 if(/[^D]*(D.*A).*/)'
一个脚本中在读入文件:
while (my $line = <$fh>) {
$line =~ m/[^D]*(D.*A).*/g;
print $1;
}
正则表达式:
[^D]*(D.*A).*
[^D]*
线可能无法与d开始(D.*A)
捕捉(圆括号)从d盯着直到 行中的最后一个A为止。捕获的部分将存储在$ 1中.*
留在字符串中。您好维纳,请您为上述答案提供一个简短的代码。我对编程相当陌生,不能直接实现上述答案。 – user3318563
请检查我的编辑。 – Vijay
如何从txt文件获取输入时使用此代码? – user3318563
你能帮我一个关于如何使用'$ line =〜s/^ [ - X] + | [-X] + $ // XG;”一个简单的例子将是非常有益 – user3318563
它给我的结果作为 “A AXXXXXXD AXXD d A” 我只希望有起始点为d和结束点为A或提取字符串反之亦然。我不希望结果包括单个D或A的。 – user3318563
同样的问题再次..我仍然得到单身的D和A,以及IAM寻找的实际输出。 – user3318563