Форум программистов, компьютерный форум, киберфорум
Наши страницы
C# для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 13, средняя оценка - 4.92
Allius25
14 / 14 / 8
Регистрация: 17.06.2013
Сообщений: 209
#1

Вытащить слово из строки. Регулярные выражения - C#

09.12.2013, 15:24. Просмотров 2155. Ответов 11
Метки нет (Все метки)

Есть лог.
Подскажите, какими наиболее удобными средствами можно вытащить подстроку для её дальнейшей обработки
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.12.2013, 15:24
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Вытащить слово из строки. Регулярные выражения (C#):

Регулярные выражения - из строки вытащить выделенную часть
Привет КиберФорумцы, есть задача, нужно из строки вытащить выделенную часть, но только регулярным выражениями: : muvik2000 joined the...

Регулярные выражения: вытащить строчку из кода страны
Посетители: <b>31</b>  (участников - <b>16</b>, гостей - <b>15</b>) Помогите, пожалуйста, написать регулярное выражение, которое бы...

Регулярные выражения. Вытащить Имена и фамилии из текстового файла
Вытащить из текста с помощью регулярных выражений имена и фамилии.

Регулярные выражения. Заменить слово на число
Как с помощью регулярных выражений находить в строке слово и изменить на число?

Регулярные выражения. Продублировать слово перед запятой
string myText = "текст,текст"; const string myReg = ","; MatchCollection myMatch = Regex.Matches(myText,...

Регулярные выражения, обернуть повторяющиеся слово в <strong> элемент
Добрый день! Помогите, пожалуйста, разобраться с регулярками! Что-то совсем простое я освоила, а вот с некоторыми заданиями...

11
ViterAlex
6346 / 3550 / 1457
Регистрация: 11.02.2013
Сообщений: 7,814
Завершенные тесты: 3
09.12.2013, 15:41 #2
зависит от структуры лога
0
es_
207 / 207 / 114
Регистрация: 14.01.2013
Сообщений: 456
09.12.2013, 15:46 #3
Лог-файл я так понимаю?
Если файл небольшой то, на мой взгляд, удобнее
C#
1
string readText = File.ReadAllText(path);
Далее
C#
1
readText.IndexOf("Начало подстроки");
Если же файл большой ,то построчно СтримРидером разбирать файл
C#
1
2
3
StreamReader sr = new StreamReader(path);
string STR1 = sr.ReadLine();
STR1.IndexOf("Начало подстроки");
Да и конечно же
Цитата Сообщение от ViterAlex Посмотреть сообщение
зависит от структуры лога
Мои примеры для открытого текстового файла
1
Allius25
14 / 14 / 8
Регистрация: 17.06.2013
Сообщений: 209
09.12.2013, 16:15  [ТС] #4
ViterAlex, es_, squid
Структура следующая:
Время запроса; Продолжительность обработки запроса;Адрес клиента;Результирующие коды;Статус кода http;байт;Методы запроса;url;Rfc931;Код иерархии;тип

Вот пример:
1382463565.732 34 192.168.10.104 TCP_HIT/200 21048 GET http://s.ytimg.com/yts/swfbin/player-vfle5oFqK/endscreen.swf - NONE/- application/x-shockwave-flash
0
lpvoid
322 / 305 / 59
Регистрация: 06.03.2013
Сообщений: 869
09.12.2013, 16:20 #5
Allius25, split по разделителю и радуйтесь.
1
es_
207 / 207 / 114
Регистрация: 14.01.2013
Сообщений: 456
09.12.2013, 16:20 #6
И таких строк много? Если да, то по какому принципу вы будете определять нужную строку?
И какое слово нужно вытащить?
0
Allius25
14 / 14 / 8
Регистрация: 17.06.2013
Сообщений: 209
09.12.2013, 16:24  [ТС] #7
es_, Обрабатываться будет весь файл. У меня нет нужды искать конкретную строку
0
lpvoid
322 / 305 / 59
Регистрация: 06.03.2013
Сообщений: 869
09.12.2013, 16:24 #8
Allius25, File.ReadAllLines - получаете массив - проходитесь по массиву каким нибудь foreach, split'аете каждую строку, ищете нужное. напишите конкретно задание.
0
ViterAlex
6346 / 3550 / 1457
Регистрация: 11.02.2013
Сообщений: 7,814
Завершенные тесты: 3
09.12.2013, 16:25 #9
Читаешь построчно, как предложил es_, и разбиваешь строку сплитом по пробелам
1
Allius25
14 / 14 / 8
Регистрация: 17.06.2013
Сообщений: 209
09.12.2013, 16:32  [ТС] #10
lpvoid, Необходимо написать парсер логов Squid.
С разделением проблем нет. Хотел узнать как можно сделать это через регулярные выражения.

Еще вопрос промежуточные данные лучше хранить в структуре?
0
es_
207 / 207 / 114
Регистрация: 14.01.2013
Сообщений: 456
09.12.2013, 16:34 #11
Присоединяюсь к вышесказанному: сплитом тут будет удобнее
C#
1
string STR2=STR1.Split(' ')[2];
В STR1 - вся строка
STR1.Split(' ') получаем массив подстрок разделённых пробелом
STR2=STR1.Split(' ')[2] берём третий элемент массива подстрок, в твоём случае, адрес клиента
3
lpvoid
322 / 305 / 59
Регистрация: 06.03.2013
Сообщений: 869
09.12.2013, 16:36 #12
Allius25,
C#
1
Regex.Split(str, @"\s");
Добавлено через 2 минуты
человеческим сплитом таки удобнее. не надо везде пихать регексы как я .
2
09.12.2013, 16:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
09.12.2013, 16:36
Привет! Вот еще темы с решениями:

И снова регулярные выражения, начало строки
Имеется подобный текст: ...

Регулярные выражения часть строки с привязкой
Например у меня есть: using System; И мне нужно получить второе слово, но с привязкой до первого, мол оно идет толька после него....

Извлечь цифры из строки. Регулярные выражения
Друзья, мучаюсь уже несколько часов со следующей задачей Пытаюсь извлечь из строки только цифры. public static void RegEXP()...

Регулярные выражения, выбор из строки символов и их иследование
Есть вот такое задание: Завдання Знайдіть час Час має формат години : хвилини. І години, і хвилини складаються з двох цифр,...


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

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

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