1 (изменено: Елена, 2018-10-04 23:09:48)

Тема: АНК:регулярные выражения

Помогите с регулярными выражениями

В буфере обмена нахадятся 3 строки (произвольно)

КЕ4978Р3658905  ( Латинские Четырнадцать букв и цыфр)
л547енва4645     (Русские буквы и цыфры)
17Ев567856рап556565   ( Латинские  буквы и цыфры)

Надо что-бы первая строка преобразовывалась в каждый знак, если в строке ровно 14 знаков

VarA1=К
VarA2=Е
VarA3=4
VarA4=9
VarA5=7
VarA6=8
VarA7=Р
VarA8=3
VarA9=6
VarA10=5
VarA11=8
VarA12=9
VarA13=0
VarA14=5

Вторая строка в

VarB=л547енва4645

Третья строка в

VarC=17Ев567856рап556565

Спасибо

2

Re: АНК:регулярные выражения

Регулярные выражения тут не нужны.
Делайте через loop parse.

3

Re: АНК:регулярные выражения

Malcev
Вот я и прошу помощи, так как не знаю как это зделать.
И где почитать про  loop parse.

4

Re: АНК:регулярные выражения

Елена пишет:

В буфере обмена нахадятся 3 строки (произвольно)

Что значит произвольно?

Елена пишет:

Надо что-бы первая строка преобразовывалась в каждый знак, если в строке ровно 14 знаков

А если не 14? Код ведь должен на все возможные ситуации как-то реагировать.

5 (изменено: Malcev, 2018-10-05 11:39:23)

Re: АНК:регулярные выражения

Елена, вы ж не первый день на форуме.
Есть справка на русском и английском языках:
http://forum.script-coding.com/viewtopic.php?id=12263

6 (изменено: Елена, 2018-10-05 23:00:03)

Re: АНК:регулярные выражения

YMP
Три строки как я написала.
Если не 14 знаков - Return

7

Re: АНК:регулярные выражения

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

8

Re: АНК:регулярные выражения

Елена пишет:

Времени совсем нет на  изучение.

Тогда вам в этот раздел:
http://forum.script-coding.com/viewforum.php?id=28

9 (изменено: sergeiplugatyr, 2018-10-06 08:32:36)

Re: АНК:регулярные выражения

VarA=КЕ4978Р3658905
VarB=л547енва4645
VarC=17Ев567856рап556565

MsgBox, % funcParseString(VarA)

funcParseString(v) {
	if (StrLen(v) == 14) {
		Loop, parse, v
		{
			outVar .= "VarA" . A_Index . " = " A_LoopField "`n"
		} return outVar
	} else {
		return
}
}
Как сказал мой дед - Я твой дед

10

Re: АНК:регулярные выражения

sergeiplugatyr
Огромное спасибо.
Только как сделать, что-бы из буфера обмена эти 3 строки
КЕ4978Р3658905
л547енва4645     
17Ев567856рап556565 

имели вид:

VarA=КЕ4978Р3658905
VarB=л547енва4645
VarC=17Ев567856рап556565

11

Re: АНК:регулярные выражения

Елена, для чего это делать? Если эти строки сразу на парсинг передаются в функцию.

/*
КЕ4978Р3658905
л547енва4645
17Ев567856рап556565
*/


MsgBox, % funcParseString()

funcParseString() {
	Clip := Clipboard
	Loop, parse, Clip, `n`r
	{
		if (StrLen(A_LoopField) == 14) {
			Loop, parse, A_LoopField
			{
				outVar .= "VarA" . A_Index . " = " A_LoopField "`n"
			} return outVar
		} else { 
		
		}
	}
}
Как сказал мой дед - Я твой дед

12 (изменено: Елена, 2018-10-07 12:43:56)

Re: АНК:регулярные выражения

sergeiplugatyr
Мне надо:Как только я поместила 3 строки в буфер и нажала к примеру F11
эти три строчки имели вид

MsgBox,VarA = КЕ4978Р3658905
VarB = л547енва4645    
VarC = 17Ев567856рап556565  

Нашла вот это. Но надо немного переделать. Подскажите как.

Loop, parse, clipboard, `n, `r
{
    MsgBox, 4, , Строка номер %A_Index%: %A_LoopField%.`n`nПродолжить?
    IfMsgBox, No, break
} 

13

Re: АНК:регулярные выражения

Давайте пошагово.

1. Помещаем что-то в буфер, например

КЕ4978Р3658905
л547енва4645
17Ев567856рап556565 

2. Запускаем наш скрипт. Он смотрит что есть в буфере. Если содержимое буфера отвечает шаблону
ыфры или латински буквы 14 штук}{один перенос строки}{цыфры и русские буквы сколько угодно}{один перенос строки}{цыфры или латинские буквы сколько угодно}
то переходим к п. 3
иначе переходим к п. 4

3.
3.1 Разбить содержимое первого подшаблона на отдельные символы и поместить их в переменные VarA1 ... VarA14
3.2 Содержимое второго подшаблона поместить в переменную VarB
3.3 Содержимое третьего подшаблона поместить в переменную VarС

4. Сообщение пользователю: "Содержимое буфера не отвечает заданному шаблону"

14 (изменено: Елена, 2018-10-07 15:30:29)

Re: АНК:регулярные выражения

ypppu
1.Запускаем наш скрипт . Он смотрит что в буфере обмена.(там может быть и 7 небольших строк). Но если в первой строке не 14 знаков - завершаем скрипт.(Сообщение пользователю: "Содержимое буфера не отвечает заданному шаблону")
2.Та строка , (она первая)где 14 знаков разбиваем на отдельные символы от VarA1 до VarA14 , я их хочу вставить в exel

Xl := ComObjActive("Excel.Application")
Xl.Range("B11").Value := "%VarA1%" 
Xl.Range("B12").Value := "%VarA2%

итд
3.Вторую строку  поместить в переменную VarB
  Третью  строку  поместить в переменную VarС
  Четвертую  строку  поместить в переменную VarD
  Пятую строку  поместить в переменную VarЕ
  Эти строки тоже будут вставляться в Exel.
  Будут ли переменные называться В,С,D или E  неважно. Главное что-бы я их могла вставить в Exel.

15

Re: АНК:регулярные выражения

Нашла вот это. Но надо немного переделать. Подскажите как.
КОД: Копировать Выделить всё

Loop, parse, clipboard, `n, `r
{
    MsgBox, 4, , Строка номер %A_Index%: %A_LoopField%.`n`nПродолжить?
    IfMsgBox, No, break
}

А что именно вам в этом коде не понятно?

16

Re: АНК:регулярные выражения

Malcev
Непонятно как каждой строке присвоить переменную.

17

Re: АНК:регулярные выражения

a := "строка"
msgbox % a

18

Re: АНК:регулярные выражения

Елена пишет:

строке присвоить переменную

"строка" := a

19

Re: АНК:регулярные выражения

С ComObj не сталкивался, не подскажу.
В программировании переменной присваивается значение (целое число, число с точкой, строка), а не наоборот.

20

Re: АНК:регулярные выражения

Непонятно, почему всё это обсуждается в теме под названием «Регулярные выражения».

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

21 (изменено: Елена, 2018-10-11 22:22:43)

Re: АНК:регулярные выражения

ypppu

Loop, parse, clipboard, `n, `r 
{ MsgBox, 4, , Файл номер %A_Index%: %A_LoopField%.`n`nПродолжить? 
IfMsgBox, No, break
 }

Этот скрипт перебирает каждую строку.
Мне нужно что-бы он каждую строку загнал в переменную, а не перебирал.

MsgBox,
VarA= "первая строка"
VarB= "вторая строка"
VarС= "третья строка"

Так-же можно сделать ?