정규식 해석 질문^^

(^|;) ?udate=([^;]*)(;|$)

위 정규식 중 (^|;) ? 이 표현이 무엇인지 해석이 잘 안됩니다.

(;|$) 이표현은 특수기호 ;가 오거나 끝이어야 한다 인가요?

첫번째랑 마지막 캡쳐그룹은 말그대로 문자열의 시작/끝 이거나 세미콜론인 토큰이고 ? 는 공백문자가 없거나 한개 있는 경우입니다. 중간에서 udate를 키로 가지면서 구분자인 세미콜론을 제외한 문자들을 추가로 캡쳐하네요.

udate=abc
...; udate=abc;
;udate=abc; ...

등의 키값쌍들이 세미콜론으로 조인된 문자열에서 $2 캡쳐로 udate키랑 짝지어진 값을 얻는게 목적인 정규식입니다.