[00/00/0000 00:00:00] EVENT: event STATUS: success JOB: jobnameA MACHINE: machine
[00/00/0000 00:00:00] EVENT: event STATUS: failed JOB: jobnameB MACHINE: machine
[11/11/1111 11:11:11] EVENT: event STATUS: success JOB: jobnameA MACHINE: machine
[12/12/1212 12:12:12] EVENT: event STATUS: success JOB: jobnameB MACHINE: machine
[22/22/2222 22:22:22] EVENT: event STATUS: hold JOB: jobnameC MACHINE: machine
Это две строки примеров из файла журнала .csv, показывающие различия между заданиями на работу. Я пытаюсь использовать регулярное выражение для возврата метки времени (\ [. {19} \]) из последнего запуска соответствующего имени задания.Regex - отметка времени возврата из последнего запуска задания (CSV-файл)
Использование VB.NET:
Dim pattern As String = "\[.{19}\](?=.+?status JOB: jobname)"
reader = New StreamReader(path)
fileContents = reader.ReadToEnd()
m = Regex.Match(fileContents, pattern)
Мой текущий шаблон возвращает первый матч вместо последнего, но даже если я получить правильное выражение, это чувствует себя ужасно громоздким, а также как неправильный подход.
Итак, как я могу заставить это дать мне последний пробег jobname, а также, как я могу сделать это более эффективно?
EDIT: Я ищу метки времени для второго (он же последнего) пробега jobnameA
Это все на одной линии? Если вам просто нужно время ** '\ [(. *)]' **, которое должно получить его между '[]' ... – Codexer
По какой-то причине Regex101.com имеет проблемы с сохранением, я, наконец, получил связь. См. ** https: //regex101.com/r/kP9dQ8/1**. Реализация там ... Также в вашем примере шаблона вам нужно вложить все это в группу захвата, а ваша нет. Конечно, он найдет совпадение, но групп захвата нет ... Так что это будет '(\ [. {19} \] (? =. +? Статус JOB: имя задания))' ... – Codexer
Спасибо за ваш ответы! В вашем примере у вас есть 4 строки, а временная метка соответствует всем 4 строкам. Я ищу, чтобы получить только последний. –