Perl::하위 문자열을 찾아 전체 단어 표시

Perl::하위 문자열을 찾아 전체 단어 표시

다음과 같은 일부 데이터가 포함된 텍스트 파일이 있습니다.

 PADHOGOA1 IOP055_VINREG5_1 ( .IO(VINREG5_1), .MONI(),
 .MON_D(px_IOP055_VINREG5_1_MON_D), .R0T(px_IOP054_VINREG5_0_R0T),
 .IO1() );

 PADV30MA0 IOP056_VOUT3_IN ( .IO(VOUT3_IN),
 .V30M(px_IOP056_VOUT3_IN_V30M));

 PADV30MA0 IOP057_VOUT3_OUT ( .IO(VOUT3_OUT),
 .V30M(px_IOP057_VOUT3_OUT_V30M) );

 PADV15MA0 IOP059_VOUT15_OUT ( .IO(VOUT15_OUT),
 .V15M(px_IOP059_VOUT15_OUT_V15M) );

PADHOGOA1 IOP064_VREFLB ( .IO(VREFLB), .MONI(), .MON_D(px_IOP064_VREFLB_MON_D), .R0T(px_IOP064_VREFLB_R0T), .IO1() );

내 하위 문자열은.V15M

이 하위 문자열을 찾아서 전체 단어를 표시하고 싶습니다.

원하는 출력:

.V15M(px_IOP059_VOUT15_OUT_V15M)

도움이 필요합니다.

내가 시도하는 코드는 다음과 같습니다

my $var= '.V15M';
open(my $file,'<',"filename") or die $!;
while(<$file>){
chomp;
@words=split(",",$_);
foreach my $word(@words){
if($word =~ /$var/){
print "FOUND",$word, "\n";
}
}   
}

내가 얻는 결과는 다음과 같습니다. PADV15MA0 IOP059_VOUT15_OUT ( .IO(VOUT15_OUT)

무엇이 잘못되었는지 이해할 수 없습니다.

답변1

아무런 문제가 없고 작동하지만 정규식이 어떻게 작동하는지 오해했습니다. 이는 ."모든 문자와 일치"를 의미하므로 에서 .V15M일치하므로 다음과 같은 결과를 얻을 수 있습니다.DV15PADV15MA0

FOUND PADV15MA0 IOP059_VOUT15_OUT ( .IO(VOUT15_OUT)
FOUND .V15M(px_IOP059_VOUT15_OUT_V15M) );

당신이 원하는 것은 다음과 같습니다.

#!/usr/bin/perl -w
my $var= '\.V15M';
open(my $file,'<',"filename") or die $!;
while(<$file>){
  chomp;
  @words=split(",",$_);
  foreach my $word(@words){
    if($word =~ /$var/){
      print "FOUND",$word, "\n";
    }
  }   
}

그러면 다음이 반환됩니다.

FOUND .V15M(px_IOP059_VOUT15_OUT_V15M) );

그러나 코드에는 단어만 필요하다고 표시되어 있으므로 이 경우 입력 줄을 쉼표 대신 공백으로 구분하십시오(파일에는 쉼표가 없습니다).

#!/usr/bin/perl -w
my $var= '\.V15M';
open(my $file,'<',"filename") or die $!;
while(<$file>){
  chomp;
  @words=split(" ",$_);
  foreach my $word(@words){
    if($word =~ /$var/){
      print "FOUND ",$word, "\n";
    }
  }   
}

답변2

다음과 같이 이 작업을 수행할 수 있습니다.

$ perl -lsne 'print "FOUND: >>>$1<<<" if /(\Q$pin\E\((?:(?!\))\H)*\))/' -- -pin=".V15M" inp

결과:

FOUND: >>>.V15M(px_IOP059_VOUT15_OUT_V15M)<<<

피복재:

  • 정규식은 핀을 찾은 다음 왼쪽 대괄호부터 가장 가까운 오른쪽 대괄호까지 찾습니다.

관련 정보