Perl 정규 표현식에서 하나의 캡처 만 잡으려면 어떻게해야합니까?

StackOverflow https://stackoverflow.com/questions/1822729

  •  10-07-2019
  •  | 
  •  

문제

followng를하는 것 외에는 경기에서 하나의 요소 만 잡을 수있는 더 쉬운 방법이 있습니까?

my $date = ($xml_file =~ m/(\d+)-sys_char/)[0];
# or
my $date = $1 if $xml_file =~ /(\d+)-sys_char/;

M이 배열을 반환하지 않고 모든 $# 일치의 하나의 연결 값 만 지정할 수있는 플래그가 있습니까?

my $date = ($xml_file =~ mSOMEOPT/(\d+)-sys_char/);

끝에서 0을 제거 하시겠습니까?

도움이 되었습니까?

해결책

당신은 원합니다 :

my ($date) = ($xml_file =~ m/(\d+)-sys_char/);

이것은 당신을 얻을 것입니다 $1 안에 $date. 질문의 두 번째 부분은 단일 변수로 번호가 매겨진 경기를 모두 얻을 수있는 방법이 없지만 다음과 같은 배열로 가져갈 수 있습니다.

my @matches = ($xml_file =~ m/(\d+)-sys_char/);

이들은 실제로 동일한 구문입니다. 이와 같은 일치의 왼쪽이 배열 일 때, 모든 서브 매치를 포함하는 배열이 반환됩니다. 첫 번째 버전은 제작됩니다 ($date) 한 원소 배열로 나머지 하위 경기를 버립니다.

다른 팁

my ($date) = $xml_file =~ m/(\d+)-sys_char/;

if ( defined $date ) {

}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top