Я работал над прогнозом погоды для программы, которую я использую, и по большей части она работает хорошо. Вот что у меня так далеко. (Не обращайте внимания на zs.stuff. Это относится к конкретной программе и не имеет отношения к кодированию Lua.)
if not http then http = require("socket.http") end
local locale = string.gsub(zs.params(1),"%s+","%%20")
local page = http.request("http://www.wunderground.com/cgi-bin/findweather/getForecast?query=" .. locale .. "&wuSelect=WEATHER")
local location = string.match(page,'title="([%w%s,]+) RSS"')
--print("Gathering weather information for " .. location .. ".")
--local windspeed = string.match(page,'<span class="nobr"><span class="b">([%d.]+)</span> mph</span>')
--print(windspeed)
local condition = string.match(page, '<td class="vaM taC"><img src="http://icons-ecast.wxug.com/i/c/a/[%w_]+.gif" width="42" height="42" alt="[%w%s]+" class="condIcon" />')
--local image = string.match(page, '<img src="http://icons-ecast.wxug.com/i/c/a/(.+).gif" width="42" height="42" alt="[%w%s]+" class="condIcon" />')
local temperature = string.match(page,'pwsvariable="tempf" english="°F" metric="°C" value="([%d.]+)">')
local humidity = string.match(page,'pwsvariable="humidity" english="" metric="" value="(%d+)"')
zs.say(location)
--zs.say("image ./Images/" .. image .. ".gif")
zs.say("<color limegreen>Condition:</color> <color white>" .. condition .. "</color>")
zs.say("<color limegreen>Temperature: </color><color white>" .. temperature .. "F</color>")
zs.say("<color limegreen>Humidity: </color><color white>" .. humidity .. "%</color>")
Моя основная проблема заключается в следующем: я изменил условие и добавил переменные изображения к тому, что они есть сейчас. Несмотря на то, что строка, с которой она должна совпадать, поступает непосредственно с веб-страницы, она вообще не совпадает. Поэтому мне интересно, что мне не хватает, что мешает работе этого кода. Если я достану
<td class="vaM taC">
это будет соответствовать состоянию безупречно. (По какой-то причине я не могу правильно отобразить вышеуказанную строку, но между `<и img нет пробела) </p>
Кто-нибудь может указать, что с ним не так? Помимо сопоставления с шаблоном, я уверяю вас, эта строка дословно с веб-страницы.
Еще один вопрос, который у меня возник, - это возможность сопоставлять разрывы строк. Есть ли какой-нибудь возможный способ сделать это? Причина, по которой я спрашиваю, заключается в том, что на той же странице несколько вещей, которые мне нужно сопоставить, разбиты на отдельные строки, и поскольку фактический шаблон, который я хочу сопоставить, отображается в других местах на странице, чтобы иметь возможность совпадать через разрывы строк, чтобы получить точную картину.