이 간단한 경우에 sed는 탐욕스럽지 않은 이유는 무엇입니까?


11
$echo "foo 65 bar" | sed -n -e 's/.*\([0-9]\+\).*/\1/p'
5

출력이 왜 그렇지 65않습니까? sed는 [0-9]\+부품 과 탐욕스럽게 맞지 않아야 합니까? sed에 모두 일치하도록하려면 어떻게해야 65합니까?

답변:


13

.*첫째 욕심이다 -의 일치 foo 6. 더 이상 일치하면 일치의 전체 패턴을 중지하기 때문는 잎 있도록이 정지 유일한 이유입니다 5을 위해 ([0-9]+). 당신이 그것을 한 경우 ([0-9]*)대신은 .*전체 라인을 일치합니다 당신은 당신의 그룹에 아무것도 얻을 것입니다. 한 가지 방법은 첫 번째 부분에 숫자와 일치하지 않도록 지시하는 것입니다.

$ echo "foo 65 bar" | sed -n -e 's/[^0-9]*\([0-9]\+\).*/\1/p'
65
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.