루아에서이 줄의 숫자를 파싱하는 데 도움이 필요합니다.이 줄을 파싱하려면 정규식이 필요합니다. 58.21 -13.73 57 -1
58.21 -13.73 57 -1
나는 현재 이것이다 : 그것은 마이너스를 반환하지 않고 소수점을 처리하지 않는 [1-9][0-9]
내가 아는 올바르지 않습니다.
감사합니다,
데이브
루아에서이 줄의 숫자를 파싱하는 데 도움이 필요합니다.이 줄을 파싱하려면 정규식이 필요합니다. 58.21 -13.73 57 -1
58.21 -13.73 57 -1
나는 현재 이것이다 : 그것은 마이너스를 반환하지 않고 소수점을 처리하지 않는 [1-9][0-9]
내가 아는 올바르지 않습니다.
감사합니다,
데이브
s="58.21 -13.73 57 -1"
for w in s:gmatch("%S+") do print(w) end
이 패턴은 단어가 공백이 아닌 문자로 된 행에서 모든 단어를 추출합니다.
이것은 정규식을위한 일이 아니다. 다음은 파이썬에서의 간단한 구현입니다.
>>> s = '58.21 -13.73 57 -1'
>>> [float(i) for i in s.split()]
[58.21, -13.73, 57.0, -1.0]
원칙은 일반적이지만 공간에 분할하고 필요한 경우 숫자 유형으로 변환합니다. 루아에서
하지만 여분의'.0'을 정수에 추가했습니다. – ghostdog74
@ghostdog : 너 진짜 니? 나는 OP를 수레로 변환했다. OP가 파싱을 통해 뭔가 다른 것을 의미한다면, 질문에 진술해야 할 필요가있다. – SilentGhost
:
(%-?%d+%.?%d+)%s+(%-?%d+%.?%d+)%s+(%-?%d+%.?%d+)%s+(%-?%d+%.?%d+)
예 :
local a, b, c, d = ("58.21 -13.73 57 -1"):match(
"(%-?%d+%.?%d*)%s+(%-?%d+%.?%d*)%s+(%-?%d+%.?%d*)%s+(%-?%d+%.?%d*)"
)
print(a, b, c, d) --> 58.21 -13.73 57 -1
당신은 (또는하지 않을 수 있습니다) 숫자로 반환 값을 변환 할 수 있습니다.
"구문 분석"으로 가정하면 숫자와 일치하는 정규식이 필요합니다. 사용자가 제공 한 문자열에서는 일치되고 싶은 것 :
아마을 사용 패턴은 ([^ ]+)
입니다. 그것은 당신의 문자열에서 (잠재적으로) 소수점과 부호를 가진 숫자가 될 공간을 제외하고는 무엇이든 찾을 수 있습니다.
어떤 언어를 사용하고 있습니까? – SilentGhost
파싱의 의미는 무엇입니까? '. *'이이 줄과 일치합니다 ;-) –
어떤 결과를 얻고 싶습니까? –