1
Sword
과 2
을 다음 문자열에 일치 시키려고합니다.루아 숫자 패턴 일치가 캡처되지 않음
당신은 loot [검] x2를받습니다.
이것은 내가 지금까지 작성한 것입니다. 검은 잘 일치하고 항목 변수에 저장됩니다. 그러나 qty는 입력 문자열에 관계없이 항상 '수량 없음'을 반환합니다.
Sword
과 2
을 다음 문자열에 일치 시키려고합니다.루아 숫자 패턴 일치가 캡처되지 않음
당신은 loot [검] x2를받습니다.
이것은 내가 지금까지 작성한 것입니다. 검은 잘 일치하고 항목 변수에 저장됩니다. 그러나 qty는 입력 문자열에 관계없이 항상 '수량 없음'을 반환합니다.
문제는 귀하의 패턴이 아니며, 복수 할당과 함께 or
이 작동하는 방식입니다. 당신이해야하는 것은 (굵은 괄호주의) 실제로 :
local item, qty =
(
msg:match('%[(.+)%]x?(%d?)') or 'No item'
)
, 'No qty'
그래서, qty
는 항상는 'No qty'
할당됩니다. 나는이 문제가 하나의 성명에서 해결 될 수 없다고 생각하지 않는다. 당신은 이런 식으로 뭔가를해야 할 것이다 :
local item, qty = msg:match('%[(.+)%]x?(%d?)')
item = item or 'No item'
qty = qty or 'No qty'
또는
local item, qty = msg:match('%[(.+)%]x?(%d?)')
item, qty = item or 'No item', qty or 'No qty'
패턴에 관한, 당신은
%[(.+)%]x?(%d*)
을 사용할 수 있습니다, 즉 10 명 이상 수량
*
대신
?
.