Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
xatr1x
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 12
1

RegEx: извлечь время из строки

26.09.2012, 18:05. Просмотров 981. Ответов 2
Метки нет (Все метки)

Здравствуйте. Есть List, в который я вставил данные из текстового файла. Например:
[Jul 11 ] VERBOSE[18805] chan_sip.c: -- Unregistered SIP '310'
[Jul 11 03:16:03] VERBOSE[18798] chan_sip.c: == Extension Changed 310[ext-local] new state Unavailable for Notify User 951
[Jul 11 03:18:14] VERBOSE[18805] chan_sip.c: -- Registered SIP '310' at 91.238.132.81 port 7828
Каждая строка - это отдельный элемент списка. Нужно с помощью регулярных выражений вставить в БД время (например, 03:16:03) и номер SIP'a (например, 310) и ввести всё это в БД. Вот как делал я:
C#
1
2
3
4
5
6
7
8
9
10
11
foreach (string m in list)
{
     Regex regexTime = new Regex(@"\d+:\d+:\d+");
     Match matchTime = regexTime.Match(m);
     string TimeSart = matchTime.Value.ToString();
     Regex regexSIPnumber = new Regex(@"\d+'");
     Match matchSIPnumber = regexSIPnumber.Match(m);
     string SIPnumber = matchSIPnumber.Value.ToString();
     cmd.CommandText = "INSERT INTO SIP(Date, SIPnumber) VALUES('" + Time + "','" + SIPnumber + "')";
     cmd.ExecuteNonQuery();
}
Проблема в том, что я очень далёк от регулярных выражений и поэтому номер SIP'а выбирается не очень правильно. А во-вторых, надо парсить так, чтобы строки, в которых номера SIP'a нет, пропускались (иначе я получаю только время, а время без сипа мне ни к чему), а парсились именно те элементы, где есть и время и номера.
Помогите, пожалуйста, как правильно составить регулярное выражение.
0
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
26.09.2012, 18:05
Ответы с готовыми решениями:

Извлечь дату и время из числа
Имеется число типа double и оно содержит информацию о дате и времени...

Конец строки в RegEx
мне нужно получить из строки всё от $$ до // или до конца строки при отсутствии...

Regex, разбор строки
Здравствуйте! Я плохо дружу с рег. выражениями, помогите разобрать строку: ...

RegEx - убрать лишнее из строки
Всем привет. В файле есть текст примерно такой...

Выделить подстроки из строки с помощью RegEx
Есть строка string text = @"hgdjhgdjhgds C:\temp\blablabla to D:\ololo" нужно...

2
Vermilion
184 / 152 / 38
Регистрация: 21.10.2011
Сообщений: 178
26.09.2012, 18:25 2
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
var list = new List<string>();
list.Add("[Jul 11 ] VERBOSE[18805] chan_sip.c: -- Unregistered SIP '310'");
list.Add("[Jul 11 03:16:03] VERBOSE[18798] chan_sip.c: == Extension Changed 310[ext-local] new state Unavailable for Notify User 951");
list.Add("[Jul 11 23:18:14] VERBOSE[18805] chan_sip.c: -- Registered SIP '310' at 91.238.132.81 port 7828");
 
foreach (var str in list)
{
    var regex = Regex.Match(str, @"\[.*(?<time>\d{2}:\d{2}:\d{2})\].*SIP\s*'(?<id>\d+)'");
    if (regex.Success)
    {
        //итого 2 группы - time и id
        MessageBox.Show(regex.Groups["time"] + " " + regex.Groups["id"]);
    }
}
1
xatr1x
0 / 0 / 0
Регистрация: 09.11.2011
Сообщений: 12
27.09.2012, 13:00  [ТС] 3
Спасибо, попробую!
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.09.2012, 13:00

Разбиение строки на слова через Regex по \b
Есть исходная строка,в которой слова разделены как пробелами,так и другими...

Проверка строки на точное соответствие шаблону RegEx
Добрый день! Скажите, могу ли я проверить строку на точное совпадение шаблону...

Regex, выражение для выборки из строки в лист
Есть строка: string value = &quot;usual text1&lt;tagID11111111&gt;formated...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru