2013-01-17 1 views
19

(\w+)?(\w*) 사이에 어떤 차이가 있습니까?정규식 차이 : ( w +)? 와 ( w *)

동일하지 않습니까?

+0

그것은 동일한 보이지 않는다 : 예를 들어, 자바 스크립트

, PHP에서

/(\w*)/.exec("") // ["", ""] /(\w+)?/.exec("") // ["", undefined] 

(preg_match)는, 전자의 경우에는, 해당 키가 일치하는 배열 단순히 부재 '''와''null '에 대해서 신경 쓰는 경우 –

+2

'(\ w +)?'가 이상하게 보입니다. 어디서 봤니? 외부 리소스에 대한 링크를 알려주십시오. –

+0

내 회사 프로젝트에서'(\ w +)? '을 보았습니다 –

답변

27

(\w+)?(\w*) 모두

그러나, 약간의 차이가 동일한 (0 .. + INF 워드 자) 결과 : 첫 번째 경우

는 정규식이 부분 "" 일치하면, 캡처 그룹이 없습니다. 두 번째 경우에는 비어 있습니다. 일부 언어에서는 전자는 null으로 나타나고 후자는 항상 ""이어야합니다. 제외 http://3v4l.org/DB6p3#v430

+0

'' "''의 결과로 ** null ** 또는 빈 문자열이 생성되는 언어는 무엇입니까? – Cozzamara

+0

@Czzzzara 첫 번째 경우에는 빈 일치가 _ 캡처되지 않습니다. –

+1

어떤 엔진을 사용합니까? Perl과 SED ** 둘 다 빈 문자열을 두 패턴으로 캡처합니다 – Cozzamara

관련 문제