Вверх ↑
Этот топик читают: Гость
Ответов: 817
Рейтинг: 52
#1: 2013-01-22 09:45:39 ЛС | профиль | цитата
Добрый день
Есть файл примерно такого содержания
code_30145.txt
Необходимо выцепить все строки начало которых "Шел " и окончание "="
Попробовал воспользоваться BlockFind, он конечно ищет, но есть недочет..
По моей логике, BlockFind должен был выцепить
"Шел солдат по городу
и крутил головой="
А он еще выцепил и
"шел домой
и ел мороженное="
Исходя из этого возник вопрос, как определить начало строки?
Есть ли у начала строки управляющий символ, на который можно было бы ориентироваться?
карма: 1

0
файлы: 1code_30145.txt [191B] [267]
vip
#1.1контекстная реклама от партнеров
Главный модератор
Ответов: 2997
Рейтинг: 395
#2: 2013-01-22 10:22:25 ЛС | профиль | цитата
RegularExpressions
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 817
Рейтинг: 52
#3: 2013-01-22 10:30:23 ЛС | профиль | цитата
Nic,
А что делать если начало поиска на одной строке, а окончание поиска на другой строке (как в моем случае) ?
------------ Дoбавленo в 10.30:
Как вариант, у меня появилась мысль о том, что можно читать текстовый файл построчно, но как это можно сделать не загружая весь файл в память?
карма: 1

0
Главный модератор
Ответов: 2997
Рейтинг: 395
#4: 2013-01-22 10:33:21 ЛС | профиль | цитата
Читайте в табличке про модификатор: m - multiline.
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 817
Рейтинг: 52
#5: 2013-01-22 10:52:05 ЛС | профиль | цитата
Nic,
Спасибо, прочитал.
Если я правильно понял то должно быть так
code_30148.txt
но не работает.
А если убрать "$ - Поиск в конце строки" то находит не всю строку, а только слово "Шел"
карма: 1

0
файлы: 1code_30148.txt [631B] [288]
Главный модератор
Ответов: 2997
Рейтинг: 395
#6: 2013-01-22 11:33:24 ЛС | профиль | цитата
Проверяйте код, который сами выкладываете.
------------ Дoбавленo в 11.33:
так надо делать

Add(RE_Search,8220,329,196)
{
Expression="^Шелs.{1,}=$"
ModifierI=0
ModifierG=1
ModifierM=0
link(onMatch,1712616:doAdd,[])
link(SourceStr,11890309:Text,[])
}
Add(Button,15194819,224,196)
{
Left=5
Top=35
link(onClick,8220:doExec,[])
}
Add(Memo,1712616,434,196)
{
Top=65
Width=390
Height=200
}
Add(StrList,11890309,329,91)
{
Strings=#14:Вася шел домой|16:и ел мороженное=|20:Шел солдат по городу|17:и крутил головой=|13:Шелковый шарф|20:туго затянут на шее=|0:|
}
карма: 6
Дорогу осилит идущий. Install/Update HiAsm.NET
0
Ответов: 817
Рейтинг: 52
#7: 2013-01-22 11:39:09 ЛС | профиль | цитата
Ага, немного получается и что то начал понимать
Вот так работает (выражение "Шел.*?=")
code_30150.txt
Но при таком раскладе находит все строки где есть символы "Шел"
Читаю wiki help, нахожу строки "Бывают ситуации, когда необходимо произвести поиск подстроки только в начале или в конце строки, для таких случаев существуют следующие метасимволы.
Пусть для примера будет строка "aaa aaa", найденные подстроки будут выделены синим цветом"
и дан пример
"^ - Поиск в начале строки - ^a - аaa aaa"
Пишу свое выражение
"^Шел.*?="
и опять не работает
Я что то опять упустил?
------------ Дoбавленo в 11.39:
Nic,
Пока писал вы уже ответили
Спасибо, сейчас буду разбирать ваш пример
карма: 1

0
файлы: 1code_30150.txt [695B] [349]
7
Сообщение
...
Прикрепленные файлы
(файлы не залиты)