Что нового

[Данные, строки] Извлечение текста между словами

Vanches

Новичок
Сообщения
12
Репутация
0
Версия AutoIt: 3.

Описание:

Добрый вечер, пытаюсь вытащить из текстового файла весь текст между словами __NEXT_DATA__ и module={}
и записать найденные фрагменты построчно в файл. Написал вот это, но файл заполняется нулями.
Код:
$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
 
A

Alofa

Гость
Код:
#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)
 
Автор
V

Vanches

Новичок
Сообщения
12
Репутация
0
Появилась еще проблема.
Код:
$Texts=StringRegExp($slines, '__NEXT_DATA__(.+?)module={}', 3)
Строка с данной регуляркой работает только если текст между ограничительными словами идет в одной строке с ними.
Подскажите как сделать, чтобы работало для любого числа строк между словами?
 
A

Alofa

Гость
Vanches сказал(а):
... Подскажите как сделать, чтобы работало для любого числа строк между словами?
По идее должно работать так (PC под рукой нет):
Код:
$Texts=StringRegExp($slines, '(?s)__NEXT_DATA__(.+?)module\=\{\}', 3)
 
Верх