0
У меня есть файл журнала, который я пытаюсь проанализировать с помощью регулярного выражения.Петля через массив строк, чтобы соответствовать шаблону
создать массив строк из файла журнала, как это:
let loadLog =
File.ReadAllLines "c:/access.log"
|> Seq.filter (fun l -> not (l.StartsWith("#")))
|> Seq.map (fun s -> s.Split())
|> Seq.map (fun l -> l.[7],1)
|> Seq.toArray
Я тогда нужно перебрать этот массив. Но я не думаю, что это сработает, потому что строка должна быть строкой.
Есть ли специальный способ справиться с чем-то подобным в f #?
type ActorDetails =
{
Date: DateTime
Name: string
Email: string
}
for line in loadLog do
let line queryString =
match queryString with
| Regex @"[\?|&]system=([^&]+)" [json] ->
let jsonValue = JValue.Parse(Uri.UnescapeDataString(json))
{
Date = DateTime.UtcNow (* replace with parsed date *)
Name = jsonValue.Value<JArray>("name").[0].Value<string>()
Email = jsonValue.Value<JArray>("mbox").[0].Value<string>().[7..]
}
Что вы хотите сделать внутри цикла? Как бы то ни было, ваша 'let line queryString' будет определять функцию, которую я подозреваю, это не то, что вы хотите сделать ... –
@TomasPetricek Да, я добавил код, чтобы сделать его более понятным. Благодарю. – SkyeBoniwell