저는 Lua에서 string.find와 string.match의 차이점을 이해하려고합니다. 내게 그것은 문자열에서 패턴을 찾는 것처럼 보인다. 그러나 차이점은 무엇입니까? 그리고 어떻게 각각을 사용합니까? 말하자면, "Disk Space : 3000 kB"라는 문자열이 있는데, 나는 그것을 추출하기를 원합니다.Lua에서 string.find와 string.match의 차이점은 무엇입니까?
편집 : 좋아, 나는 복잡하게 생각하고 지금은 길을 잃은 것 같아. 지금까지이 작성한
my $mem;
my $memfree;
open(FILE, 'proc/meminfo');
while (<FILE>)
{
if (m/MemTotal/)
{
$mem = $_;
$mem =~ s/.*:(.*)/$1/;
}
elseif (m/MemFree/)
{
$memfree = $_;
$memfree =~ s/.*:(.*)/$1/;
}
}
close(FILE);
: 기본적으로, 펄에서 루아에,이 번역해야
for Line in io.lines("/proc/meminfo") do
if Line:find("MemTotal") then
Mem = Line
Mem = string.gsub(Mem, ".*", ".*", 1)
end
end
을하지만 그것은 분명히 잘못된 것입니다. 나는 무엇을 얻지 못합니까? 나는 그것이 잘못된 이유를 이해하고, 실제로 무엇을하고 있는지 나는
print(Mem)
을 수행 할 때 왜
.*
을 반환하지만 나는 그것을 할 수있는 적절한 방법이 무엇인지 이해하지 않습니다. 정규식이 나를 혼란스럽게합니다!
local space = tonumber(("Disk Space 3000 kB"):match("Disk Space ([%.,%d]+) kB"))
string.find 어떤 캡처를 반환하기 전에 점에서 약간 다른, 그것은 발견 된 문자열의 시작과 끝 인덱스를 반환합니다 : 귀하의 경우에는
감사합니다. 지금은 이해합니다. 내 교과서에서는 string.find (제목 문자열, 패턴 문자열, 선택적 시작 위치, 선택적 일반 플래그)를 정의했습니다. 필자가 이해 하듯이 선택적 시작 위치는 찾고자하는 패턴의 위치를 반환하는 출력 변수가 아니라 검색을 시작하기를 원할 수있는 위치입니다. 아니면 그렇지? 왜냐하면 그렇지 않다면 나는 교과서 예제에 포지션이 반환되고 있다는 것에 눈치 채지 못했고 사과했다. – OddCore
start position 매개 변수는 문자열에서 검색을 시작할 위치를 지정합니다. string.match와 string.find 모두에 사용할 수 있습니다. –