2011-04-27 6 views
0

누구나이 정규식을 설명 할 수 있습니까? 이 $ %는 무엇을합니까? 나는 아무 생각이 없다.펄 정규 표현식은 무엇을합니까?

$self = "/usr/bin/XYZ"; 

$self =~s%/+[^/]*$%%; 

print ("$self\n"); 

감사합니다.

+1

왜 작은 파일에 넣고 실행하지 않습니까? 너 자신을 시험해 보는 것 같이 아무것도 없다. 뿐만 아니라 당신은 더 많은 것을 배울 수 있습니다, 당신은 그것에 대해 더 흥미로운 것들을 찾기 위해 함께 놀 수 있습니다. – shawnhcorey

답변

3

퍼센트 그것은

$self=~s/\/+[^\/]*$//; 

그래서 $ 문자열 앵커의 끝은

를 다시 작성할 수 있습니다
은/문자를 이스케이프하는 것을 방지하기 위해 구분 기호로 사용되고있다. 표현식이 다음으로 바뀌고 있습니다. -

\/+ - one or more forward slashes 
[^\/]* - any number of anything that is not a forward slash 
$  - at the end of the string 


이렇게 벗기기 /end of string 끄기

3

일반적으로 경로 이름에 /가 많이 포함되어 있기 때문에 %는 더 일반적인 // 구분자 대신 사용됩니다. 그렇지 않으면 경로를 다르게 사용해야합니다. $는 단순히 줄의 끝과 일치합니다. 두 번째 %는이 경우 비어있는 대체 패턴의 끝입니다.

regexp의 의미는 - /로 끝나고 그 사이에 /가없는 줄 끝으로 끝나는 것을 찾으라는 의미입니다. 기본적으로 XYZ를 이런 방법으로 가져와/usr/bin을 제외하는 것으로 대체 할 것입니다.

+0

+1 날 2 초. 두 %%는 대체 문자열이 비어 있음을 나타냅니다. –

+0

어리석은 나는 그것을 대체하지 못했다. :-) –

1

백분율 기호가보다 일반적인 s/pattern/replacement/대신 s에 대한 구분 기호로 사용됩니다. 그래서 그 바로 앞에있는 달러 기호는 줄 끝 앵커입니다.