다음 세 줄의 코드는 문자열을 $ value로 추출하여 $ header에 저장하는 것을 목표로합니다. 그러나 $value =~ s/^\s+//;
과 $value =~ s/\s+$//;
의 차이점을 모르겠습니다.
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$header[$i]= $value;
다음 세 줄의 코드는 문자열을 $ value로 추출하여 $ header에 저장하는 것을 목표로합니다. 그러나 $value =~ s/^\s+//;
과 $value =~ s/\s+$//;
의 차이점을 모르겠습니다.
$value =~ s/^\s+//;
$value =~ s/\s+$//;
$header[$i]= $value;
:
어떻게 문자열의 시작/끝에서 빈 공간을 제거합니까?
대체품을 사용할 수 있습니다. 단일 행의 경우 은 앞이나 뒤에있는 공백을 모두 공백으로 바꾸기를 원합니다. 결합 된 문은 별도의 것보다 느린 밖으로는 변하더라도
s/^\s+//; s/\s+$//;
당신은 또한, 하나의 대체로서 그것을 쓸 수 있습니다 : 당신은 대체 한 쌍의 것을 할 수 있습니다. 그 하지만, 당신에게 문제가되지 않을 수 있습니다
s/^\s+|\s+$//g;
을이 정규 표현식에서 교대는 처음이나 문자열의 끝에서 중 일치하는 앵커가 교대보다 낮은 우선 순위가 있기 때문이다.
/g
플래그를 사용하면 대체 문자 이 가능한 모든 일치하므로 모두 가져옵니다. 후행 개행 문자가\s+
과 일치하고$
앵커가 문자열의 절대 끝과 일치 할 수 있으므로 줄 바꿈도 사라집니다.
그리고 perldoc perlrequick
에서
우리는 앵커에게 메타
^
및$
을 사용, 지정합니다. 앵커^
은 문자열의 시작 부분 인 에서 일치 함을 의미하며$
은 의 끝에 일치하거나 문자열 끝에있는 줄 바꿈 앞에 의미합니다. 일부 예 :"housekeeper" =~ /keeper/; # matches "housekeeper" =~ /^keeper/; # doesn't match "housekeeper" =~ /keeper$/; # matches "housekeeper\n" =~ /keeper$/; # matches "housekeeper" =~ /^housekeeper$/; # matches
^는로 시작하는 단어는이 문자열로 끝납니다.
'$'이 아니라'\ z'를 설명했습니다. '$'는 문자열의 끝에 일치하거나 문자열 끝에있는 줄 바꿈 앞에 일치합니다. – ikegami
첫 번째 줄은 줄 시작 부분의 공백 만 대체합니다. perldoc perlfaq4
에서
단지 기록을 위해 ... "나는 코드의 다음 세 줄은 $ 값에 문자열을 추출하고 $ 헤더에 저장하는 것을 목표로 알고", 그들은하지 않습니다. 그들은 스칼라 $ 값의 끝에서 공백을 제거하고이를 배열 @header의 $ i 번째 요소에 넣는 것을 목표로합니다. – AmbroseChapel