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

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

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

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

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

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

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

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

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

11
ViterAlex
6459 / 3629 / 1484
Регистрация: 11.02.2013
Сообщений: 7,979
Завершенные тесты: 3
09.12.2013, 15:41 2
зависит от структуры лога
0
es_
208 / 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_
208 / 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
6459 / 3629 / 1484
Регистрация: 11.02.2013
Сообщений: 7,979
Завершенные тесты: 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_
208 / 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

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

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

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


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

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

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