1

Тема: AHK: Поиск по части строки файла

Всем здравия. Такой вопрос.

Допустим, есть файл содержания:

g22gaga - любая фраза
pap1a - что-нибудь
koko - тут тоже что-то
wowowowo - и тут

Требуется, чтобы по нажатию на опр. хоткей выполнялся поиск по этому файлу построчно с маской. Вот маску я разобрать не могу.
Необходимо первую часть каждой строки (до знака "тире") использовать как переменную после.
Например.
Жмём хоткей
Сканируем первую строку. До знака "тире" у нас 'g22gaga' вносим это в переменную 'line'
Выполняем действие:
SendInput {F6}/id{Space}%line%{Enter}
Далее делаем снова поиск, но теперь со строкой №2. так же содержимое до "тире" вносим в 'line'
Снова выполняем то же действие.
И так со всеми строками (а их может быть больше 20)
После сканирования всех строк действия завершаются, пока ещё раз не будет нажат хоткей.

Заранее благодарен.

2 (изменено: KepocuH, 2013-08-13 16:33:45)

Re: AHK: Поиск по части строки файла

#1::
loop, read, file.txt 
{
    If RegExMatch(A_LoopReadLine, "\S+", line)
       SendInput {F6}/id{Space}%line%{Enter}
}
return

3

Re: AHK: Поиск по части строки файла

Loop, Read, %File% 
    If RegExMatch( A_LoopReadLine, "(.*?)\s*-", line)  
        SendInput {F6}/id{Space}%line1%{Enter}
По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

4

Re: AHK: Поиск по части строки файла

Вах вах. Вот это я плохой человек
Спасибо тебе, о мудрейший

5 (изменено: Pr1mera, 2013-08-13 16:36:56)

Re: AHK: Поиск по части строки файла

serzh82saratov пишет:
Loop, Read, %File% 
    If RegExMatch( A_LoopReadLine, "(.*?)\s*-", line)  
        SendInput {F6}/id{Space}%line1%{Enter}

А почему именно %line1% ? Почему не %line% ?
Оба варианта работают.

6 (изменено: KepocuH, 2013-08-13 16:40:37)

Re: AHK: Поиск по части строки файла

Pr1mera, вопрос: в первой части строки (до тире) может содержаться пробел? Или там всегда одно слово?

7

Re: AHK: Поиск по части строки файла

А почему именно %line1% ? Почему не %line% ?

(.*?) это первый захватывающий подшаблон... короче курите RegEx.

Оба варианта работают.

Первый вариант не сработает правильно:

g22 gaga - любая фраза
g22gaga-любая фраза

И сработает если в строке нет тире, но есть пробел.
Если это излишне, то без разницы.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

8

Re: AHK: Поиск по части строки файла

Там всегда одно слово. Но может содержать различные знаки: точка, _  и даже тире.

9

Re: AHK: Поиск по части строки файла

и даже тире.

Тогда мой вариант не сработает.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

10 (изменено: Irbis, 2013-08-13 18:14:44)

Re: AHK: Поиск по части строки файла

Так сработает:

File = example.txt
Loop, Read, %File%
   If (Str:=SubStr(A_LoopReadLine,1,InStr(A_LoopReadLine, " - ")))
      SendInput {F6}/id{Space}%Str%{Enter}
+ Off

Шаблоны - это безусловно круто, гибко, лаконично и т.д. и т.п.
Но не стоит стрелять из пушки по воробьям, имхо.

11 (изменено: Stepnoy, 2018-01-07 14:31:59)

Re: AHK: Поиск по части строки файла

Всем привет.

Похожая ситуация, но что-то никак не найду ответ. Вроде все должно быть просто, но никак не подберу правильный вариант.

Есть строка из HTML-страницы: <audio id="player" src="http://stream.loveradio.ru:80/12_love_24?type=.aac&UID=C1027CDA9ABEA9AA3AAA87089A34037F" preload="auto"></audio>

Нужно вытянуть данные, которые выделены жирным. Штука в том, что они постоянно меняются (но всегда только буквы или цифры), хотя все остальное остается неизменно. Сделать все через loop/parse не проблема, но больно много парсить придется.

Хочу сделать все красиво через RegExMatch, но никак не найду подходящую формулу. Не пойму, как через те же [A-Z]+[0-9]+ сделать правильно, чтобы не перечислять одно и то же десяток раз. И можно ли задать размер для выходной переменной (в нашем случае это всегда 32 символа)?
---------------------------------------------------------------

Хм, оказывается все не так и сложно. Как можно сообщение удалить)?

-----------------------------------------------------------------

Ну раз полезное, тогда, конечно, напишу: [A-Z0-9]{32}

Как обычно, нужно было спать ложиться, а не код добивать, ночью бы ответ приснился).

12

Re: AHK: Поиск по части строки файла

Никак. И не стоит удалять, потому что сообщение полезное:

Хм, оказывается все не так и сложно.

Можно ещё своё решение выложить, лишний пример лишним не бывает.

13

Re: AHK: Поиск по части строки файла

Не брезгуйте (.*) - хоть он и самый неприемлемый шаблон, но в строчках с фиксированным текстом, где нужно выделить лишь одну-две уникальные части это самый легкий вариант шаблона.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.