[Regex] grep에서 non-greedy match를하는 방법?


Answers

실제 .*? perl 에서만 작동합니다. 나는 그 grep이 regexp 신택스를 어떻게 확장하는지 확신하지 못한다. 다행스럽게도 grep과 함께 perl 구문을 사용할 수 있으므로 grep -P 가 작동하지만 grep -Eegrep 과 동일하지만 작동하지 않습니다 (greedy).

또한보십시오 : http://blog.vinceliu.com/2008/02/non-greedy-regular-expression-matching.html

Question

가장 짧은 시합을 grep하고 싶고 패턴은 다음과 같아야합니다.

<car ... model=BMW ...>
...
...
...
</car>

...는 모든 문자를 의미하며 입력은 여러 줄입니다.




grep

grep 비 탐욕적인 일치의 경우 부정 문자 클래스를 사용할 수 있습니다. 즉, 와일드 카드를 피하십시오.

예를 들어 페이지 콘텐츠에서 jpeg 파일에 대한 모든 링크를 가져 오려면 다음을 사용하십시오.

grep -o '"[^" ]\+.jpg"'

여러 줄을 처리하려면 먼저 xargs 통해 입력을 파이프하십시오. 성능을 위해서는 ripgrep 사용 ripgrep .




Links