Try this regexp
^at\s+(?<time>.+?),.+?\(.+?longitude\s+(?<longitude>.+?),latitude\s+(?<latitude>.+?)\)\s+in\s+(?<location>.+?),the depth.+?\s+(?<depth>\d+)
Regex r= new Regex(
"^at\\s+(?<time>.+?),.+?\\(.+?longitude\\s+(?<longitude>.+?),"+
"latitude\\s+(?<latitude>.+?)\\)\\s+in\\s+(?<location>.+?),th"+
"e depth.+?\\s+(?<depth>\\d+)",
RegexOptions.IgnoreCase
| RegexOptions.Compiled
);
string message = "At Apr 29 2011 13:12:45 UTC,happend an earthquake(near longitude 121.98,latitude 21.18) in TAIWAN REGION,the depth is about 177km";
Match m = r.Match(message);
if (m.Success)
{
Console.WriteLine("time:" + m.Groups["time"].Value);
Console.WriteLine("longitude:" + m.Groups["longitude"].Value);
Console.WriteLine("latitude:" + m.Groups["latitude"].Value);
Console.WriteLine("location:" + m.Groups["location"].Value);
Console.WriteLine("depth:" + m.Groups["depth"].Value);
}
This will give you an output like this:
time:Apr 29 2011 13:12:45 UTC
longitude:121.98
latitude 21.18
location:TAIWAN REGION
depth: 177