作者frank1983 (What?)
看板Perl
标题Re: [问题] 回传抓到数值的位置
时间Tue Apr 7 00:06:28 2009
※ 引述《adu (^_^)》之铭言:
: ※ 引述《deh3215 ()》之铭言:
: : #!/usr/bin/perl
: : my $mainstring = "12345678901234567890HERE12345678901234567890";
: : my $substring = "HERE";
: : print my $first = index($mainstring, $substring);
: : 结果:20 #---从0开始
: : 终止位置加HERE长度就可求出.......
: 请问版大,想要从一串字元中把 特定字元前後、位置 抓出
: i.e.
: "123456here7890A1234567890Bhere1234567890C12wow34567890D"
: ^^^^ ^^^^ ^^^
: 抓出456here789、90Bhere123、C12wow345
: 该用甚麽方法?
不知道下面的程式符不符合你的要求?
#!/usr/bin/perl
my $all_line = "12345678901234567890HERE12345678901234567890";
my $pattern = qr/.{3}?(HERE|HOME|WOW)(.{3}?)/i;
my ($end, $start);
while ($all_line =~ m/$pattern/g) {
$end = pos($all_line) - length($2) - 1;
$start = $end - length($1) + 1;
print "$& $start $end\n";
}
# ------
其输出结果为
890HERE123 20 23
其中 20 和 23 代表 HERE 在字串 $all_line 中的起始和终止位置
(index 从 0 开始)
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.112.230.108
1F:推 adu:是的!可以使用,感谢您^^ 04/07 10:29