Что нового

Захват большого количества значений и сохранения в массив

wisenlucky

Новичок
Сообщения
36
Репутация
0
Есть тексовый файл. Нужно захватить все значения которые начинаются на :
Начало захвата".com/"
Конец захвата "?fref"
И положить все значения в массив.
В конце каждого значения добавить "test"

Значений может легко быть 1000.

Подскажите пожалуйста как решить задачу - весь день бьюсь над этим :stars:
 

firex

AutoIT Гуру
Сообщения
943
Репутация
208
Код:
$Array = StringRegExp( FileRead( "file.txt" ), "\.com/(\d+)\?fref", 3 )
For $Idx = 1 To UBound( $Array ) - 1 Step 1
    $Array[$Idx] &= "test"
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
wisenlucky,
Пример такого файла дайте и пример одной из нужных в результате строк.

firex,
А почему (\d+)?
 
Автор
W

wisenlucky

Новичок
Сообщения
36
Репутация
0
Фаил добавил в приложение :ok:. К сожалению предыдущий код вернул ошибку: /ErrorStdOut "D:\AutoIT\scripts\archive\data_crawl.au3"

Пример нужной строки: isaac.mack31295975156_test
"_test" добавленное значение
 

Вложения

  • basket_rawdata.zip
    23.2 КБ · Просмотры: 5

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
wisenlucky [?]
Пример нужной строки: isaac.mack31295975156_test
"_test" добавленное значение
В Вашем файле isaac.mack31295975156 встречается (href="https://www.onlinebasketballcamp.com/isaac.mack31295975156&extragetparams=%7B%22hc_location%22%3A%22profile_browser%22%7D"), но не подходит под маску, указанную в первом посте (".com/" - "?fref"). Почему? Вы уточните эту маску.
 

alex33

Скриптер
Сообщения
1,457
Репутация
186
попробуйте так
Код:
$Array = StringRegExp(FileRead("file.txt"), "\.com/(.*?)\?fref", 3)
For $Idx = 1 To UBound( $Array ) - 1 Step 1
    $Array[$Idx] &= "test"
Next
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
firex, alex33,
А почему 0-элемент массива пропускается?
 
Автор
W

wisenlucky

Новичок
Сообщения
36
Репутация
0
madmasles сказал(а):
wisenlucky [?]
Пример нужной строки: isaac.mack31295975156_test
"_test" добавленное значение
В Вашем файле isaac.mack31295975156 встречается (href="https://www.onlinebasketballcamp.com/isaac.mack31295975156&extragetparams=%7B%22hc_location%22%3A%22profile_browser%22%7D"), но не подходит под маску, указанную в первом посте (".com/" - "?fref"). Почему? Вы уточните эту маску.

Видимо я допустил ошибку, считая, что "?fref" есть в каждом случае. Оказывется это не так. (К примеру строчка "roy.ybarra" встречается в обоих вариантах ). Мне нужны примеры заканичваюзщиеся на "?fref"



Добавлено:
Сообщение автоматически объединено:

alex33 сказал(а):
попробуйте так
Код:
$Array = StringRegExp(FileRead("file.txt"), "\.com/(.*?)\?fref", 3)
For $Idx = 1 To UBound( $Array ) - 1 Step 1
    $Array[$Idx] &= "test"
Next

Видимо мне нужно было сразу сказать, что значения встречаются ещё с окончанием &amp. попробовал код, но строка захватывается не совсем правильно. из-за того, что ".com" встречается несколько раз. Вероятно захат нужно начинать с конца?
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
wisenlucky,
А так работает?
Код:
#include <Array.au3>

Local $s_File = @ScriptDir & '\basket_rawdata.txt', $s_Txt = '_test'

$a_Res = StringRegExp(StringReplace(FileRead($s_File), '?fref', $s_Txt & '?fref'), '\.com/([^''"]+?)\?fref', 3)
If @error Then
	MsgBox(16, 'Error', 'Error')
Else
	_ArrayDisplay($a_Res)
EndIf
 
Автор
W

wisenlucky

Новичок
Сообщения
36
Репутация
0
Да, так всё работает шикарно! Спасибо! :laugh:
 

madmasles

Модератор
Глобальный модератор
Сообщения
7,790
Репутация
2,322
wisenlucky,
[info border=#0000ff float=left]На форуме принято помечать тему решенной после получения ответа на свой вопрос!
Вверху или внизу темы нажмите на ссылку такого вида:
package_old.gif
Тема не решена
[/info]
 
Автор
W

wisenlucky

Новичок
Сообщения
36
Репутация
0
Прошу прощения, упустил момент с пометкой темы как решенной.
 
Верх