2017-09-20 1 views
-1

아래의 두 표현의 차이점은 무엇입니까? 1. (\S+)정규식 ( S +?) vs ( S +)

나는 누군가가 이것을 설명 할 수 있으면 고맙겠습니다.

감사합니다,

+0

https://regex101.com/ 내가 여기 실행 빠른 테스트를 기반으로,'(\ S +)'는 당신에게 모든 단어를,'(\ S +?)'는 당신에게 개별 문자를 찾으려고합니다. 나는 실제 대답으로 그것을 게시하는 내 대답에 충분히 자신감이 아니에요. – phroureo

+1

https://stackoverflow.com/questions/25528452/in-a-regex-what-changes-when-you-add-a-question-mark-to –

답변

0

첫 번째 수단은 필요 (욕심)로 환원 한 무제한 시간, 가능한 한 여러 번 사이에 공백이 아닌 문자 단일 문자를 일치합니다.

두 번째 수단은 필요 (게으른)로 확장 한 무제한 시간 사이에 공백이 아닌 문자 단일 문자, 가능한 한 으로 몇 번을 맞 춥니 다.

차이점은 욕심 많거나 게으른 반복입니다. Regex 버디 도움말 파일에서 :

욕심 꾸러기 수량 한정자는 먼저 토큰을 가능한 한 많이 반복하려고 시도하고 전반적인 일치를 찾기 위해 점차적으로 엔진을 역 추적합니다. 게으른 수량 한정자는 먼저 필요한만큼 몇 번 토큰을 반복하고 엔진이 정규식을 통해 백 트랙으로 점차적으로 확장하여 전체 일치를 찾습니다.

차이

은 아래 이미지에서 볼 수있다 :

Greedy quantifier

Lazy quantifier

+0

두 이미지가 같은 것처럼 보입니다. 다른 URL 있습니다. – Arjan

+1

@Arjan : 감사합니다. 어떻게 든 같은 이미지를 두 번 붙여 넣을 수있었습니다. 도! 결정된. 그 점을 지적 해 주셔서 감사합니다. –

관련 문제