2010-11-23 3 views

답변

5
당신은 문자열의 끝 부분에 고정하면

[0-9] * 빈 문자열을 일치시킬 수 있습니다. 당신은 예방이 빈 일치합니다.

후 아마도 "0-9"+로 "적어도 하나의 자리"를 말하고 싶습니다

5

첫 번째 예에서 [0-9]는 "*"번 발생할 수 있습니다. 즉 0 이상을 의미합니다 (따라서 "="만 일치합니다.) "$"를 추가하면 더 이상 일치하지 않기 때문에 그것은 끝나지 않는다 [0-9].

6

정규식을 개발하는 동안 문자열이 실제로 일치하는 부분 만 인쇄하는 것이 유용 할 수 있습니다, 전체 줄 대신. 이것은 정규식이하는 일에 대한 더 나은 통찰력을 줄 것입니다. 변수 $&을 사용하여이 작업을 수행 할 수 있습니다. 그래서 대신 :

echo "a=-1"|perl -nle 'if (/.*=[0-9]*/){print;}' 

사용

echo "a=-1"|perl -nle 'if (/.*=[0-9]*/){print $&;}' 

을 이제 다른 출력 얻을 것이다 :

a= 

을 그리고이 새로운 정보는 당신에게 머리를주고 당신의 정규식이 얼마나 이해 시작할 수 있습니다 [ mis] 입력 데이터와 관련하여 작동합니다.

관련 문제