이슈 상황 :

대화 스크립트 엑셀 파일에서 Command란에
$TokenType : Value $
를 작성하고 역직렬화 할때 , 파싱해서 사용을 하고 있다.
하지만 해당 문자열을 파싱할때 문제가 발생했다.
"$fade:true$ $duration:0.5$ $easygraph:4$"
fade 와 easygraph는 토큰으로 인지하여 값을 분리했는데
duration의 value인 0.5가 값으로 안 읽히고 text 토큰 형태로 읽히는 문제가 발생했다.
원인 :
private static readonly Regex TagRegex =
new Regex(@"\$(\w+):(\w*)\$", RegexOptions.Compiled);
Command 문자열을 특정패턴으로 분리 할수있게 Regax를 사용하고 있다.
(\w*)
원인은 이 정규식(Regax) 때문이였다.
\w는 보통 영문자,숫자,밑줄(_)만 허용함,
예시 ) abc,A1,test_01 이런것만 정규식으로 인정이 된다는 것
0.5에는 점(.)이 있으므로 매칭이 되지 않는다.
그렇기때문에 앞에 duration 토큰 탐색후 value값 탐색시에 조건이 안맞으므로
예외 처리로 text 토큰 처리를 하게 된것이다.
해결 방법 :
private static readonly Regex TagRegex =
new Regex(@"\$(\w+):([^$]*)\$", RegexOptions.Compiled);
(\w*) => ([^$]*)
로 정규식을 변경하였다.
[^$]* 해당 정규식을 사용한 의미
1. 값 부분은 $ 아니면 전부 허용
2. * 이므로 빈 문자열(공백)도 허용
예시 :
$tag:0.5$
$tag:-1.25$
$tag:hello world$
$tag:50%$
$tag:test_01$
$tag:abc-def$
$tag:$
Value 부분에 어떤 값이 들어와도 해당 토큰에 따라 변경을 해놓게 해결하였다.
'인디게임개발 > 프로젝트L' 카테고리의 다른 글
| [2026.03] 키워드 메모 (0) | 2026.03.14 |
|---|---|
| [2026.03] 대화플로우 작업 진행도 근황 및 TIL (0) | 2026.03.13 |
| [2026.03] 3월 마일스톤 계획 (0) | 2026.03.13 |
| [2026.02] 프로젝트L 2월 작업 근황 : 전투 1차 최적화 리팩토링 및 기타 작업 (0) | 2026.03.13 |
| [2026.01 ~ 2026.02] 전투시스템 최적화 이슈 발생 및 리팩토링 진행 (0) | 2026.02.12 |



