因此,如果我讀了一個包含行的檔案,我需要找到每一行的正則運算式。我怎樣才能顯示它。
例如:檔案中有2行:
第一行有123 and 456
第二行有789。
并要求用戶從用戶輸入中獲取特定的正則運算式 例如:
輸入一個正則運算式=>/span> /d{3}/
我怎樣才能得到這樣的輸出:
我怎樣才能得到這樣的輸出?
行1有2匹配,顯示了起始位置。
123 [20] 456 [28]
第2行有1個與顯示的起始位置相匹配。
789 [20]
我試過:
print "Enter a reg expression => "/span>。
my $rexp = <> 。
chomp $rexp;
if(/($rexp)/){
print "S1和位置$-[$1]
"。
或者:
my $n = ($line =~ /$rexp/) 。
if(/$rexp/){
for ( my $i = 0; $i<$n; $i ) {
no strict 'refs';
print "在$-[$i]位置匹配'$i'。
"。
}
} else {
print "No match
"。
但是不作業。 那么,我怎樣才能在同一行中列印出2個(或2個以上)rexp匹配和位置的值。謝謝你
uj5u.com熱心網友回復:
你可以使用while回圈和m//g來獲得所有的匹配,并將它們和位置保存在一個陣列中,然后用它來列印出結果:
#!/usr/bin/env perl
使用警告。
use strict;
use feature qw/say/;
# Hardcoded RE for demonstration purposes[/span]。
my $re = qr/d{3}/;
while (<DATA>) {
my @matches;
while (/$re/g) {
push @matches, "$& 。[$-[0]]"。
}
my $count = @matches;
say "Line $. has $count match(es) with starting location(s) shown: ";
say join(" "/span>, @matches)。
}
__DATA__
第一行有123和456
第二行有789個
輸出
第1行有2個匹配,起始位置顯示。
123: [20] 456: [28]
第2行有1個匹配項,顯示了起始位置。
789: [20]
運行時。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/323797.html
標籤:
