다음은 또한 올바른 그룹으로 '텍스트 1', '텍스트 2'와 '텍스트 3'를 둘 것, 작동합니다 :
^(.+?)(?:\s(.*?)(?:\s;(.*))?)?$
이 작업 방법을 참조하십시오 : 여기
http://www.rubular.com/r/IyPyF3wXLx는 설명입니다 :
^ # start of string
(.+?) # put text1 in group 1
(?: # start an optional non-capturing group
\s(.*?) # space followed by text2, put text2 in group 2
(?: # start an optional non-capturing group
\s;(.*) # space and semicolon, followed by text3, put text3 in group 3
)? # end of optional non-capturing group
)? # end of optional non-capturing group
$ # end of string
중간에 옵션 그룹들이 존재하는 경우 정규식은 텍스트 2 및 텍스트 3을 일치시킬 수 있지만, 그렇지 않은 경우 여전히 일치합니다.
원하는 일치하는 텍스트는 실제로 text1, text2 및 text3이 아닙니까? 일치시킬 텍스트 양식에 대한 자세한 설명을 제공 할 수 있습니까? – macduff