Автор Тема: [Данные, строки] Извлечение текста между словами  (Прочитано 618 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Vanches [?]

  • Новичок
  • *
  • Сообщений: 11
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Версия AutoIt: 3.

Описание:

Добрый вечер, пытаюсь вытащить из текстового файла весь текст между словами  __NEXT_DATA__  и module={}
и записать найденные фрагменты построчно в файл. Написал вот это, но файл заполняется нулями.
Код: AutoIt [Выделить]
$sFilePath = @ScriptDir & "\file.txt" ;файл в папке со скриптом
$slines = _FileCountLines($sFilePath) ; возвращает количество строк в файле
for $i=1 to $slines
$command = FileReadLine($sFilePath, $i)
$Texts=StringRegExp($command, '__NEXT_DATA__(.+?)module={}', 3)
FileWriteLine(@ScriptDir & "\result.txt", $Texts)
next
 




Русское сообщество AutoIt

[Данные, строки] Извлечение текста между словами
« Отправлен: Январь 31, 2018, 17:57:23 »

Помечен как лучший ответ пользователем Vanches Отправлен Февраль 01, 2018, 10:50:19

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
Код: AutoIt [Выделить]
#include <File.au3>
$sFilePath = @ScriptDir & "\file.txt" ;файл в папке со скриптом
$slines = FileRead($sFilePath)
$Texts=StringRegExp($slines, '__NEXT_DATA__(.+?)module={}', 3)
If Not @error Then _FileWriteFromArray(@ScriptDir & "\result.txt", $Texts)


Оффлайн Vanches [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо, то что нужно.

Оффлайн Vanches [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Появилась еще проблема.
Цитировать
Код: AutoIt [Выделить]
$Texts=StringRegExp($slines, '__NEXT_DATA__(.+?)module={}', 3)

Строка с данной регуляркой работает только если текст между ограничительными словами идет в одной строке с ними.
Подскажите как сделать, чтобы работало для любого числа строк между словами?

Русское сообщество AutoIt

Re: [Данные, строки] Извлечение текста между словами
« Ответ #3 Отправлен: Февраль 07, 2018, 17:46:30 »

Оффлайн Alofa [?]

  • AutoIt Гуру
  • *****
  • Сообщений: 1433
  • Репутация: 212
  • Пол: Мужской
  • Windows 7 /10 [x64]
    • Награды
  • Версия AutoIt: 3.3.12.0
... Подскажите как сделать, чтобы работало для любого числа строк между словами?
По идее должно работать так (PC под рукой нет):
Код: AutoIt [Выделить]
$Texts=StringRegExp($slines, '(?s)__NEXT_DATA__(.+?)module\=\{\}', 3)

« Последнее редактирование: Февраль 07, 2018, 22:17:35 от Alofa »

Оффлайн Vanches [?]

  • Новичок
  • *
  • Сообщений: 11

  • Автор темы
  • Репутация: 0
  • Пол: Мужской
    • Награды
  • Версия AutoIt: 3.3.14.0
Спасибо, работает.

Русское сообщество AutoIt

Re: [Данные, строки] Извлечение текста между словами
« Ответ #5 Отправлен: Февраль 08, 2018, 09:35:20 »

 

Похожие темы

  Тема / Автор Ответов Последний ответ
8 Ответов
7502 Просмотров
Последний ответ Март 07, 2012, 22:52:01
от ggzgamer
4 Ответов
2290 Просмотров
Последний ответ Июнь 05, 2012, 16:30:02
от Afonichev
5 Ответов
3800 Просмотров
Последний ответ Июль 13, 2012, 23:39:18
от CreatoR
14 Ответов
3405 Просмотров
Последний ответ Январь 31, 2013, 16:26:01
от StarEdik
0 Ответов
1147 Просмотров
Последний ответ Апрель 22, 2015, 17:49:49
от madmasles
9 Ответов
3842 Просмотров
Последний ответ Апрель 27, 2015, 17:12:09
от Garrett
2 Ответов
2662 Просмотров
Последний ответ Июль 18, 2015, 17:54:21
от alex33
0 Ответов
780 Просмотров
Последний ответ Июль 18, 2015, 16:51:12
от madmasles
3 Ответов
792 Просмотров
Последний ответ Декабрь 09, 2016, 01:09:52
от Garrett
2 Ответов
2529 Просмотров
Последний ответ Декабрь 16, 2016, 17:57:00
от Alofa