Perl 정규 표현식에서 하나의 캡처 만 잡으려면 어떻게해야합니까?
문제
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 ) {
}
제휴하지 않습니다 StackOverflow