Страница 1 из 2

Поиск по содержимому файлов с учетом знаков препинания

Добавлено: Сб июл 02, 2016 20:16
Аля
Добрый день!

Прошу помочь в решении вопроса. Поиском по форуму, к сожалению, не нашла ответа.
Дано: несколько сотен файлов в формате .htm и .html. Необходимо провести поиск по содержимому файлов с ключевой фразой "Статус: в процессе".
Все упирается именно в двоеточие. То есть находит слово "статус" во всех файлах, "в процессе" в нескольких, а нужно именно фразу целиком, так как "в процессе" может находиться и просто в тексте файла, а не в шапке, определяя завершенность текста. Если же я пробую фразу целиком, то пишет "Искомые файлы не найдены".
Файлы на русском языке, кодировка utf-8.
Испробованы все галочки в диалоге поиска, плагины поиска. Я понимаю, что я, разумеется, что-то делаю не так, но что - понять не могу.
Если я правильно поняла, то, скорее всего, нужно использовать параметр "Регулярные выражения", но если ставить на него галку, исчезает галка с параметра "utf-8", и не находится вообще ничего.
Пожалуйста, объясните, можно ли провести поиск по содержимому в файлах utf-8, учитывая знаки препинания в запросе?
Простите за возможную путанность объяснения.
Спасибо.

Добавлено: Сб июл 02, 2016 21:01
Avada
Аля
Во-первых, в порядке общей информации: в новейших версиях TC 9.0, помимо прочего, добавлена возможность одновременного поиска текста с регулярными выражениями и в кодировке UTF-8.
Во-вторых, конкретно по проблеме: лично у меня в тестовом HTML-файле в UTF-8 фрагмент, содержащий двоеточие, прекрасно находится. В том числе и ровно та фраза, которую вы ищете. Между прочим, и в 8.52a тоже. Опция "UTF-8" при поиске, естественно, включена. И, конечно, без всяких регулярных выражений.
Вы какой, собственно, версией TC пользуетесь? И заодно уж — о каких плагинах поиска речь?

Добавлено: Сб июл 02, 2016 22:59
Аля
Avada,
кажется, я поняла, в чем дело, простите, что раньше не сказала, я в этом не особо разбираюсь.
Если посмотреть на код страницы, то искомая фраза отображена так:

Код: Выделить всё

<br/>
<b>Статус:</b>
в процессе
<br/><br/>
То есть, получается, с переносом на другую строку, видимо, поэтому и не ищет.
Подскажите, пожалуйста, можно ли как-нибудь искать такие запросы, или это невозможно?
Спасибо.

Добавлено: Сб июл 02, 2016 23:21
Flasher
С отметкой "Регулярные выражения": Статус:</b>\r?\nв процессе

Добавлено: Сб июл 02, 2016 23:38
Avada
Аля
Ну тогда удивляться нечему. Тут целый букет всего. HTML обрабатывается как простой текст, теги при этом не игнорируются. Вдобавок в приведённом фрагменте перед "в процессе" нет пробела. И, наконец, перенос. Как его искать, в справке, между прочим, написано.
Короче говоря, без регэкспов — вот так (и кодировку выставить не забудьте):
Статус:</b>\nв процессе
Это при условии, что у вас все вхождения оформлены однотипно.

Добавлено: Сб июл 02, 2016 23:47
Аля
Flasher, Avada,

все равно пишет - "Искомые файлы не найдены". Версия TC последняя, при поиске ставлю галки на "UTF-8" и ставлю, и пробовала без "Регулярные выражения".
Прикрепляю ссылку (сам файл сохранен в html на комп) как образец, остальные такие же. Может быть, возможно понять, в чем дело.
Не хотелось бы вручную открывать и переименовывать каждый незаконченный файл, их несколько сотен.
Приношу извинения за беспокойство, всю голову уже сломала, как по-другому сделать, не сильна в этом, к сожалению.
Спасибо.
поставила лишний пробел в ссылке:
https://ficbook.net/printfic/350870

Добавлено: Вс июл 03, 2016 00:01
Flasher
Аля
Ищет без регулярок. В поле "Искать файлы:" *.htm;*.html стоит?

Добавлено: Вс июл 03, 2016 00:24
Avada
Flasher
В моём тестовом HTML-файле с точно таким же вхождением и точно такой же кодировкой по вышеприведённому варианту поиска всё находится (вообще без масок, поскольку искал в выделенном файле), в этом — нет. Причину пока не понял, на ночь глядя искать её не буду, отложу на потом.

Добавлено спустя 2 минуты:

Аля
А слов "в процессе" для поиска недостаточно?

Добавлено: Вс июл 03, 2016 00:37
Flasher
Avada писал(а):Причину пока не понял
Причину чего?

Добавлено: Вс июл 03, 2016 00:40
Аля
Flasher,
Avada,

нет, к сожалению, не ищет.
Приведенный файлик со стихами, а есть просто с длинными текстами. Такое выражение попадается в самом тексте, иногда несколько раз, а мне нужно знать, какие из нескольких сотен файлов именно не закончены и пересохранять их по мере окончания.
Вручную пересматривать - весьма муторно, хотела затем переименованием добавить в конце имени "в процессе", чтобы знать, по каким файлам отслеживать обновления.

Добавлено: Вс июл 03, 2016 00:59
Flasher
Аля
Приведите версию TC и скриншот окна поиска с заданными опциями.

Добавлено: Вс июл 03, 2016 09:05
Avada
Flasher писал(а):Причину чего?
Я вроде как ясно написал — чего. В моём файле с такими условиями всё находилось, в выложенном — нет. О прочем см. далее.
Твой вариант с регэкспами у меня почему-то не работает.

Аля
Чтобы уж совсем всё было ясно видно, взял за основу свой тестовый файл (где всё находится) и образец (где ничего не находится) и привёл их к внешне идентичному содержанию, включающему

Код: Выделить всё

<body>
<p><b>Статус:</b>
в процессе</p>
</body>
На результат поиска это не повлияло никак.
Далее я учёл, что в файлах разный тип переноса строк (\r\n в моём, \n в редуцированном образце), привёл это к единому виду, поменяв (через AkelPad) в образце юниксовский стиль переносов на стиль Windows. После чего поиск в том варианте, как я это предлагал ранее, немедленно заработал.
Так что, да, причина в переносах. Но использовать универсальную поисковую строку я пока не смог.

Добавлено: Вс июл 03, 2016 10:53
Аля
Flasher,

ссылка на скриншот:
http://s018.radikal.ru/i514/1607/a7/39b405e48a80.jpg

Версия TC - 9.0 beta 3, последняя, скачивала отсюда, с форума.

Испробовано: по Вашему варианту написания (и по второму варианту тоже)

Код: Выделить всё

Статус:</b>\nв процессе

Поле "Искать файлы:" *.htm;*.html " - заполнено, пусто;
Галочка "Регулярные выражения" - стоит, не стоит;
Все остальные галки в правом столбике, кроме UTF-8, стоят, не стоят.
И все вышеперечисленное в различных комбинациях...

Avada,

если причина в переносах, можно ли каким-нибудь способом через TC пакетно отредактировать все файлы в приемлемый вид? Или нужна сторонняя программа (если такие существуют)?
Или все-таки есть способ поиска по содержимому и в таких файлах в TC?
Спасибо.

Добавлено: Вс июл 03, 2016 11:14
Avada
Аля
У меня пока ответов на заданные вопросы нет, поскольку этой проблемой серьёзно раньше никогда не занимался. К тому же приведение переносов к другому виду на локальной машине не означает, что и на сервере всё будет так же. (Загляните, например, сюда.) Но, возможно, кто-то сможет подсказать что-то толковое.
И, думаю, очевидно, что вариант, показанный на скрине, в любом случае работать не может (регэкспы включены, но в поле ввода их нет).

Добавлено: Вс июл 03, 2016 12:26
Skif_off
Avada писал(а):Далее я учёл, что в файлах разный тип переноса строк (\r\n в моём, \n в редуцированном образце)
Если правильно понял, в вашем примере "Статус:</b>\nв процессе" это не должно иметь значения: без галки Регулярные выражения можно использовать Escape-последовательности, а с ними обычно \n - это любой перенос строки. По крайней мере так в любом приличном текстовом редакторе.
Баг ТС? (Ранее не пробовал искать подобное, обычно обычный текст.)

Аля
RegXtract не успели попробовать?

Добавлено спустя 20 минут:

Хотя нет, PCREsearch, наверное, будет поудобнее (см. Line count: замените выражение на Статус:</b>\r?\nв процессе на всякий случай и при поиске с плагинами в условие Line count = 1)

Добавлено спустя 2 минуты:

С PCREsearch можно будет создать и пользовательский набор колонок.