간단한 패턴 매칭을 사용하여 루아에서 화학 공식을 파싱하려고합니다. 그러나 캡처 그룹을 선택적으로 지정하는 방법을 알지 못합니다.루아 패턴 매칭을 사용하는 선택적 그룹 캡쳐
가pattern = "(%u%l*)(%d*)"
첫번째 그룹 (즉 "H", "그", 등등) 원자 기호 포착 번째 그룹에있는 그 원자의 수를 캡처 : 여기 마련 한 패턴 분자. 일반적으로이 값은 정수 값이지만 1 인 경우, 그것은 종종 같이 생략 :
formula = "C2H6O"
count
의 결과가 ''
입니다 일치가없는 경우 나, 글로벌 경기을 시도 내가 예상 할 것 인 대신에 nil
. 내가 궁금해서 count = ''
하지만 만약 루아의 선택적 캡처 그룹이 있다면
compound = {}
for atom,count in string.gmatch(formula, pattern) do
compound[atom] = count or 1
end
은 분명히 난 그냥 확인할 수 있습니다.
감사합니다, 제로 브랜 BTW에 큰 일은, 내가 현재 사용하고있는 것입니다 :) – Moop
피드백에 대한 Moop 감사합니다! –