Гость
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RegExp - нужна помощь при создании шаблона / 9 сообщений из 9, страница 1 из 1
15.03.2012, 15:27
    #37706828
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
Всем добрый день.
Что-то човсем у меня не получается создать шаблон регулярного выражения.
Дано:
Строка вида
Код: xml
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
Событие: тест75
Параметр: п1
Время:13:00
Событие: тест1
Параметр: п1
Время:13:00
Событие: тест2
Параметр: п2ааааааааааааа
Время:13:03
Событие: тест1
Параметр: п67
Время:18:00
Событие: тест6
Параметр: п1
Время:13:00


В результате хочу получить на выходе
Код: xml
1.
2.
3.
4.
5.
6.
Событие: тест1
Параметр: п1
Время:13:00
Событие: тест1
Параметр: п67
Время:18:00


Как пройтись циклом по всей строке и найти все вхождения я знаю
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
Expr.Global = True
Expr.IgnoreCase = True

 'Me.Winsock2.GetData s
 Set ExprMatches = Expr.Execute(s)
 For Each ExprMatch In ExprMatches
    Set ExprMatch = ExprMatches(0)
    strTMP = strTMP & ExprMatch
    
Next



А вот правильно создать
Код: vbnet
1.
Expr.Pattern 

не получается.
В нужной строке могут быть абсолютно любые символы и их кол-во может быть абсолютно разным.
Помогите плиз кто в теме.
...
Рейтинг: 0 / 0
15.03.2012, 15:57
    #37706910
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
Нужно отфильтровать по названию события что ли?
...
Рейтинг: 0 / 0
15.03.2012, 16:04
    #37706929
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
в моем конкретном примере - да.
...
Рейтинг: 0 / 0
15.03.2012, 16:23
    #37706991
Antonariy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
В x(y) будут находиться блоки событие-параметр-время целиком, а в x(y).Submatches(от 0 до 2) соответственно по отдельности событие:..., параметр:... и время:... каждого блока.
Код: vbnet
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
Sub asfasdfdsafg()
Dim rx As New RegExp, s As String, n as String
    rx.Global = True
    rx.Multiline = True
    rx.IgnoreCase = True

s = "Событие: тест75" & vbCrLf & _
    "Параметр: п1 " & vbCrLf & _
    "Время:13:00" & vbCrLf & _
    "Событие: тест1" & vbCrLf & _
    "Параметр: п1" & vbCrLf & _
    "Время:13:00" & vbCrLf & _
    "Событие: тест2" & vbCrLf & _
    "Параметр: п2ааааааааааааа" & vbCrLf & _
    "Время:13:03" & vbCrLf & _
    "Событие: тест1" & vbCrLf & _
    "Параметр: п67" & vbCrLf & _
    "Время:18:00" & vbCrLf & _
    "Событие: тест6" & vbCrLf & _
    "Параметр: п1" & vbCrLf & _
    "Время:13:00"

    n = "тест1"

    rx.Pattern = "[\r\n]*(Событие: " & n & ")[\r\n]+(Параметр:.*)[\r\n]+(Время:.*)[\r\n]*"
    
    Set x = rx.Execute(s)
End Sub
...
Рейтинг: 0 / 0
15.03.2012, 17:06
    #37707112
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
не совсем то что нужно.
Я забыл указать,что в строке
Код: xml
1.
2.
3.
Событие: тест1
Параметр: п1
Время:13:00


может быть абсолютно разное кол-во строк, и разные наименования

например:
Код: xml
1.
2.
3.
4.
5.
6.
Событие: тест1
Параметр: п1
Параметр:8888
Параметр3:длодлодл
Параметр:555
Время:13:00



мне нужно выбирать подстроки вида:
"Событие: тест1"+все что угодно до слова "Событие:"
...
Рейтинг: 0 / 0
15.03.2012, 17:53
    #37707212
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
Забудь про регулярные выражения. Они тебе тут не помогут.
Просто сделай цикл по строкам - ищешь заголовок блока. Как нашел заголовок переходишь во второй цикл в котором печатаешь строки пока не найдешь конец блока. Все.
...
Рейтинг: 0 / 0
15.03.2012, 17:54
    #37707216
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
думал уже над этим.долго получается.хочется пошустрее чтоб было.
...
Рейтинг: 0 / 0
15.03.2012, 17:57
    #37707225
White Owl
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
Tauzerдумал уже над этим.долго получается.хочется пошустрее чтоб было.А ты думаешь что регулярные выражения это такая магическая штука которая мгновенно угадывает где находится подстрока? ХА-ХА-ХА!
Правильно! Формула-1 не устраивает, слишком медленно, давайте пересядем на трактор.
...
Рейтинг: 0 / 0
15.03.2012, 18:03
    #37707234
Tauzer
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
RegExp - нужна помощь при создании шаблона
Да нет,просто у меня задачка нестандартная.Мне по сокету может за секуднду прийти десяток таких string с кол-вом строк в каждой по 100 , и мне нужно во время это все обрабатывать и выводить на экран информацию.Да и фильтровать нужно будет не только по слову Событие1, но и по другим тоже.Завтра буду мутить с циклами,но боюсь тут нужен какой-то другой подход.
...
Рейтинг: 0 / 0
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / RegExp - нужна помощь при создании шаблона / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]