76

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

И ещё проще:

text := "zaabb,xbbcazaczcxdd"
MsgBox, % RegExReplace(text, "\G(\A[^,]*)?+.*?\K[zx]")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

77 (изменено: teadrinker, 2017-11-10 02:07:58)

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

\A это то же самое, что ^

text := "zaabb,xbbcazaczcxdd"
MsgBox, % RegExReplace(text, "\G(^[^,]*)?+.*?\K[zx]")

точнее, отличается только в многострочном режиме.

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

78

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

Вопрос по RegExMatch.
"a" должна быть только с одной стороны от "|".
b|b  ; false
a|a  ; false
a|b  ; true
b|a  ; true

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

79

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

По прошлому вопросу придумал только как не удалять первый символ, как бы его под несколько символов переделать, не только для "а".

text = zaabbxbbcaaaaaccdd  ; abcdd
MsgBox, % RegExReplace(text, "((?<=a)([^a]*)a)", "$2")
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

80

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

serzh82saratov пишет:

"a" должна быть только с одной стороны от "|".

Это вроде просто:

str1 := "b|b"
str2 := "a|a"
str3 := "a|b"
str4 := "b|a"

Loop 4
   MsgBox, % RegExMatch(str%A_Index%, "a\|[^a]|[^a]\|a")
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

81

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]


MsgBox % (RegExMatch(str%A_Index%, "a\|") ? true : false)
       ^ (RegExMatch(str%A_Index%, "\|a") ? true : false)

82 (изменено: Mambr, 2017-12-05 13:45:26)

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

Добрый день!
Требуется помощь глобального разума!

Суть вопроса:
Не получается составить ОЧЕНЬ сложный шаблон для удаления строк (пунктов меню) в grub.cfg - файл конфига Grub2
Пример части кода из него:


menuentry "Загрузка установленной Windows" --class windows {
	set root=(hd1,1)
	chainloader +1
}

submenu "Kali Linux x86 (параметры загрузки) >>>" --class ninja {
	
	menuentry "<<< Back (или нажать [Esc])" {
		configfile (hd0,1)/boot/grub/grub.cfg
	}
	
	menuentry "Kali Linux - live mode" --class ninja {
		linux /Kali/live/vmlinuz-4.12.0-kali1-686-pae live-media-path=/Kali/live locales=ru_RU.UTF-8 keyboard-layouts=ru,us keyboard-options=grp:ctrl_shift_toggle pkeys=ru setxkbmap=ru boot=live components splash username=root hostname=kali
		initrd /Kali/live/initrd.img-4.12.0-kali1-686-pae
	}
	
	menuentry "Kali Linux - encrypted persistence mode" --class ninja {
		linux /Kali/live/vmlinuz-4.12.0-kali1-686-pae live-media-path=/Kali/live locales=ru_RU.UTF-8 keyboard-layouts=ru,us keyboard-options=grp:ctrl_shift_toggle pkeys=ru setxkbmap=ru persistence-label=Kali boot=live components splash username=root hostname=kali persistent=cryptsetup persistence-encryption=luks persistence
		initrd /Kali/live/initrd.img-4.12.0-kali1-686-pae
	}
}

submenu "Установка Windows 10 Enterprise >>>" --class windows {
	
	menuentry "<<< Back (или нажать [Esc])" {
		configfile (hd0,1)/boot/grub/grub.cfg
	}
	
	menuentry "Установка Windows 10 Enterprise x64" --class windows {
		chainloader /efi/boot-winSet/x64/bootx64.efi
	}
	
	menuentry "Установка Windows 10 Enterprise x86" --class windows {
		chainloader /efi/boot-winSet/x86/bootia32.efi
	}
}

Нужно загнать в переменную какой-нибудь маркер, напр., слово "Загрузка", ""Установка" и т.п. и удалить все строки по этому маркеру.
При этом нужно удалить все строки вместе с последней закрывающей } + одна пустая строка после нее.
Например все это:


menuentry "Загрузка установленной Windows" --class windows {
	set root=(hd1,1)
	chainloader +1
}

Есть еще одна крутая заморочка - пункты submenu и menuentry
Думаю, это наглядно видно из представленного образца конфига Grub2.
Если submenu, нужно также удалить все вместе с закрывающей } + одна пустая строка после нее, а menuentry в submenu может быть сколько угодно ...

Как вам мозголомочка? Возможно сваять ТАКОЙ шаблон или это из категории unreal???

83

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

ButtonAuto:
link := "https://bitconnect.co/user/trade?Market=BCC"
req := ComObjCreate("WinHTTP.WinHTTPRequest.5.1")
req.Open("GET", link, false)
req.Send()
text := req.responseText

RegexMatch(text, "(<span class=""text-white small-size-font ""><i class=""fa fa-dollar  ""></i> (.+?)</span>)(<span class=""dev_base_currency_last_price_dollar_header"" style=""font-size: 11px"">(.+?)</span>)", match)
MsgBox, % match1 match2
Return

Подскажите, как задать шаблон границы начала и конца? По справке не понятно, методом тыка тоже не доходит как сделать. По отдельности работает:


RegexMatch(text, "<span class=""text-white small-size-font ""><i class=""fa fa-dollar  ""></i> (.+?)</span>", match)
RegexMatch(text, "<span class=""dev_base_currency_last_price_dollar_header"" style=""font-size: 11px"">(.+?)</span>", m)
MsgBox, % match1 m1

84

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

Странникх пишет:

Подскажите, как задать шаблон границы начала и конца?

Начала и конца чего?

Странникх пишет:
RegexMatch(text, "(<span class=""text-white small-size-font ""><i class=""fa fa-dollar  ""></i> (.+?)</span>)(<span class=""dev_base_currency_last_price_dollar_header"" style=""font-size: 11px"">(.+?)</span>)", match)
MsgBox, % match1 match2

Это не может работать в принципе. Чему здесь соответствует match1? Содержание параметра NeedleRegEx должно точно соответствовать части или целому тексту, в том виде, как он есть в исходной переменной, а у вас тут две несвязанных между собой части из разных мест. Естественно, что соответствие не найдено, такого текста в переменной нет.

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

85 (изменено: teadrinker, 2017-12-09 23:17:19)

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

Пример:

text =
(
Первая строка
Вторая строка<1234.56>
Третья строка
Четвёртая строка<789.0>
Пятая строка
)

RegExMatch(text, "s)Вторая строка<([0-9\.]+).*?Четвёртая строка<((?1))", Number)
MsgBox, % Number1 . A_Tab . Number2
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Skype dmitry_fiveg

86

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

teadrinker, спасибо так работает)

RegExMatch(text, "s)<span class=""text-white small-size-font ""><i class=""fa fa-dollar  ""></i> ([0-9\.]+).*?<span class=""dev_base_currency_last_price_dollar_header"" style=""font-size: 11px"">((?1))", match)

87

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

DEF - нужные символы, abc - ненужные.
Надо в M1 получить "DFE", или пусто, если нет нужных, в M2 получить  "***".

Str = aDcFbEba***

RegExMatch(Str, "", M)

MsgBox % M1 "`n" M2
По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

88

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

serzh82saratov пишет:

Надо в M1 получить "DFE", или пусто, если нет нужных, в M2 получить  "***".

Не совсем понятно: или пусто, если нет нужных <> если нет нужных, в M2 получить "***"

89

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

М1 пусто если нет нужных. В M2 всегда то, что после нужных и ненужных. Если нужных и ненужных нет, то в M2 вся строка.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).

90

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

В одну строчку не получится. RegexMatch определяет только символы, идущие подряд, RegexReplace не выдаст две переменные.

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

91

Re: AHK: Вопросы по RegExp [, RegEx, RegExMatch, RegExReplace]

Это самый лучший ответ. А я голову ломаю.

По вопросам возмездной помощи пишите письма
E-Mail: serzh82saratov@mail.ru
OS: Win7x64, AutoHotkey_L v1.1.29.01 (Unicode 32-bit).