Что нового

[Данные, строки] Поиск в буфере обмена ключей

qwertypower

Новичок
Сообщения
12
Репутация
0
Есть код для поиска в буфере определенной ссылки из этой темы http://autoit-script.ru/index.php?topic=1603.0
Код:
$sOldClip = ClipGet()

While 1
    $sCurrentClip = ClipGet()

    If $sOldClip <> $sCurrentClip Then
        $sOldClip = StringRegExpReplace($sCurrentClip, '^http://.*=(\d+)$', '\JOPA')
        ClipPut($sOldClip)
    EndIf

    Sleep(100)
WEnd


Мне нужно в место http адреса находить ключ, который будет в формате, первая буква K обязательная и остальные 16 символов, ключи будут разные, например KH74SDUKYS73AMBF. Как поставить определение ключа по первой букве "К" и остальное по количеству символов?
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
Re: [Данные, строки] Найти в буфере

Как в таком скрипте определить определенную фразу по первой букве в этой строчке?
Полный код:
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, '^http://.*=(\d+)$'


Как вместо
Код:
'^http://.*=(\d+)$'
подставить другое значение для определения скопированного текста, начинающего с первой буквы "K" и в количестве 22 буквы? Спасибо


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

Такой вариант не работает:
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, '^K.*=*********************'
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Вы можете заполнить первый пост и написать, что вам нужно?!
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Кажется понял, но не факт...
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, 'http(.+?)\R', '\JOPA')

У вас есть список ключей в *.txt файле?

а лучше напишите, что именно вам надо.
т.е. примерно так: У меня есть буфер обмена, который содержит то-то (под спойлером), нужно заменить вот эту часть на этот ключ (выделить нужное), ключ берется от тудого(опционально).
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
Можете взять этот ключ KH74SDUKYS73AMBF.

Суть такова, ключи могут быть разные, мне нужно что бы в буфере обмена искался текст по первой букве "К" и остальные неизвестных 15 символов, такие как в этом ключе KH74SDUKYS73AMBF
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, 'K(.+?)\R|\h', 'key')
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
mr.Gbabak сказал(а):
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, 'K(.+?)\R|\h', 'key')

Можно именно чтобы в слове было 15 символов, помимо буквы "К"? Как то обозначать что длинный ключ из первой буквы "К" и 15 символов?
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, 'K.{15}', 'key')
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
Спасибо, а можно использовать в коде сразу два параметра? Один, который вы сделали и еще один, например на ключ, который начинается на букву S{15}? И еще такая проблема, при запущенной скрипте любые файлы копируются только со второго раза, это можно как то исправить?
 
A

Alofa

Гость
mr.Gbabak
mr.Gbabak сказал(а):
Код:
$sOldClip = StringRegExpReplace($sCurrentClip, 'K.{15}', 'key')
qwertypower сказал(а):
... ключ из первой буквы "К" и 15 символов

Под ваш шаблон подходит ключ "васяKH74SDUKYS73AMBFпупкин"

P.s: а вообще сложно что-то придумывать если автор не дал пример исходного текста.
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Alofa сказал(а):
Под ваш шаблон подходит ключ "васяKH74SDUKYS73AMBFпупкин"
хм, у меня правильно отображается, именно с К и 15 символов...
qwertypower сказал(а):
использовать в коде сразу два параметра? ...... это можно как то исправить?
Конечно можно, но как написал Alofa сложно, что то подсказать, если не понимаешь суть. Мне не понятно какой скрипт запущен, какие файлы и что у вас в скрипте твориться.
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
Я имел ввиду, что бы было несколько функций поиска на разные коды, вот пример кода

Код:
$sOldClip = ClipGet()

While 1
    $sCurrentClip = ClipGet()

    If $sOldClip <> $sCurrentClip Then
        $sOldClip = StringRegExpReplace($sCurrentClip, 'K.{15}', 'key')
        ClipPut($sOldClip)
    EndIf

    If $sOldClip <> $sCurrentClip Then
        $sOldClip = StringRegExpReplace($sCurrentClip, 'B.{12}', 'key')
        ClipPut($sOldClip)
    EndIf

    If $sOldClip <> $sCurrentClip Then
        $sOldClip = StringRegExpReplace($sCurrentClip, 'R.{11}', 'key')
        ClipPut($sOldClip)
    EndIf

    Sleep(100)
WEnd
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
не будет работать. Вернее будет, но не так как вам хочется.
К примеру вам нужно найти ключ начинающийся на R, но в предыдущем ключе есть K, то скрипт найдет первым букву K...и все изменит и соответственно получится ерунда.
хотя, если у вас в буфере содержится только ключ и ни чего больше? И нужно определить его принадлежность?
Или html страничка какого нибудь сайта?
(Еще раз вам предлагаю выложить буфер обмена)
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
Если я скопирую ключ начинающийся на "К" и плюс 15 символов, то при вставке будет слово как в коде "key", а если мне понадобятся другие ключи начинающие на другие буквы, как в коде привел пример, например ключ начинающийся на "B" из 12 символов, то я просто копирую этот ключ(который начинается на B) и вставляться соответственно будет например "key2" итак далее. Или вы имеете ввиду, что пока буфер не очистить, там будет путаница?
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
т.е. у вас в буфере будет содержаться только ключ и ничего больше?!
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
qwertypower [?]
Да, будет только ключ
Может так будет проще?
Код:
Local $key[3] = ['++1++', '==2==', '--3--']
$sOldClip = ClipGet()
Switch StringLeft($sOldClip, 1)
	Case 'K'
		$sOldClip = $key[0]

	Case 'S'
		$sOldClip = $key[1]
		
	Case 'R'
		$sOldClip = $key[2]
EndSwitch
ClipPut($sOldClip)
 
Автор
Q

qwertypower

Новичок
Сообщения
12
Репутация
0
mr.Gbabak сказал(а):
qwertypower [?]
Может так будет проще?

При запуске скрипт заканчивает работу, можно его поставить в цикл? Мне нужно, что бы он в цикле был и мониторил.
И немного не пойму в коде, это я так понимаю первая буква "S" и количество букв?
Код:
Case 'S'
        $sOldClip = $key[4]


И это идет то, что будет идти в замену?
Код:
Local $key[3] = ['++1++', '==2==', '--3--']
 

mr.Gbabak

Осваивающий
Сообщения
257
Репутация
23
Код:
Local $key[3] = ['++1++', '==2==', '--3--']; тут $key [3] объявление массива, а ['++1++', '==2==', '--3--'] список ключей для замены
;можно было бы оспользовать $key1 = '++1++', $key2='==2==', $key3= --3--
;посмотрите в справке оператор DIM
	While 1
$sOldClip = ClipGet() ;возвращаем буфер обмена
Switch StringLeft($sOldClip, 1) ;возвращает из стрики буфера обмена, первый знак слева StringLeft
    Case 'K' ; если первый знак "K"
        $sOldClip = $key[0] ; то переменной $sOldClip присвоется значение  $key[0], ну или $key1 = '++1++'
		ClipPut($sOldClip) ; переменная $sOldClip запишется в буфер обмена
    Case 'S'
        $sOldClip = $key[1]
        ClipPut($sOldClip)
    Case 'R'
        $sOldClip = $key[2]
		ClipPut($sOldClip)
EndSwitch

sleep (100) ;пауза
 Wend
 
Верх