搜索Google地图结果的代码。 我的正则表达式得到一个地址:
Regex re_addressen = new Regex("\"\\w*\\s[0-9]+,\\s[0-9][0-9][0-9][0-9]\\s\\w\\w\\s\\w,*");
(搜索每个谷歌地图结果中的所有地址)
但是我只得到一个字的地址。 有些地址有2个字。我想要在我的列表框中看到的那些。
我的正则表达式是:
Regex re_addressen =
new Regex("\"\\w*\\s\\w*[0-9]+,\\s[0-9][0-9][0-9][0-9]\\s\\w\\w\\s\\w,*");
但是,只有一个字长的地址。
答案 0 :(得分:2)
好像你正试图用正则表达式解析html。 Don't do it
而是从谷歌找到一个API,它返回一个xml或json并使用它。例如,请参阅this url。
现在你所要做的就是下载这个url并使用适当的json解析器解析json结果。我将Json.Net用于此
using (var client = new HttpClient())
{
var query = "big bang";
var urlx = "http://maps.googleapis.com/maps/api/geocode/json?sensor=true&address=" + WebUtility.UrlEncode(query);
//An optional language. default is en-US
//client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("en-US"));
//client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("ru-RU"));
//client.DefaultRequestHeaders.AcceptLanguage.Add(new StringWithQualityHeaderValue("ar-EG"));
var json = await client.GetStringAsync(urlx);
dynamic obj = JsonConvert.DeserializeObject(json);
foreach (var res in obj.results)
{
string address = res.formatted_address;
decimal lat = res.geometry.location.lat;
decimal lng = res.geometry.location.lng;
Console.WriteLine(string.Format("{0},{1}=>{2}", lat, lng, address));
}
}