Что нового

Программа для поиска-замены с помощью регулярных выражений

Suppir

Продвинутый
Сообщения
967
Репутация
62
Добрый день!

Решил поизучать AutoIt на конкретном примере - хочу сделать бесплатную программу для поиска/замены с помощью регулярных выражений.

Код:
#include <ButtonConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>

$Form1 = GUICreate("РегексПлюс", 954, 819, 172, 166)
$Edit1 = GUICtrlCreateEdit("", 0, 72, 473, 745, BitOR($ES_MULTILINE, $WS_VSCROLL))
$Edit2 = GUICtrlCreateEdit("", 472, 72, 481, 745, BitOR($ES_MULTILINE, $WS_VSCROLL))
$Button1 = GUICtrlCreateButton("Найти", 8, 8, 81, 25, 0)
$Button2 = GUICtrlCreateButton("Заменить на", 8, 40, 81, 25, 0)
$Input1 = GUICtrlCreateInput("", 96, 8, 529, 21)
$Input2 = GUICtrlCreateInput("", 96, 40, 529, 21)
$Checkbox1 = GUICtrlCreateCheckbox("Checkbox1", 640, 8, 81, 17)
$Checkbox2 = GUICtrlCreateCheckbox("Checkbox2", 640, 40, 81, 17)
$Checkbox3 = GUICtrlCreateCheckbox("Checkbox3", 728, 8, 81, 17)
$Checkbox4 = GUICtrlCreateCheckbox("Checkbox4", 728, 40, 81, 17)
$Checkbox5 = GUICtrlCreateCheckbox("Checkbox5", 816, 8, 81, 17)
$Checkbox6 = GUICtrlCreateCheckbox("Checkbox6", 816, 40, 81, 17)

GUISetState(@SW_SHOW)

While 1
	$nMsg = GUIGetMsg()
	Switch $nMsg
		Case $GUI_EVENT_CLOSE
			Exit
		Case $Button1
			
		Case $Button2
			$text=GUICtrlRead($Edit1)
			$regex=GUICtrlRead($Input1)
			$replaceto=GUICtrlRead($Input2)
			$replaced=StringRegExpReplace($text, $regex, $replaceto)
			GUICtrlSetData($Edit2, $replaced)
	EndSwitch
WEnd

Принцип работы очень простой:
1. В левый GUICtrlCreateEdit копируете любой текст.
2. В поле "Найти" пишете регулярное выражение для поиска фрагментов.
3. В поле "Заменить" пишете символы, которые заменят найденные фрагменты.
4. Нажимаете "Заменить"
5. Измененный текст появляется в правом GUICtrlCreateEdit

Конечно, это только начало :smile: Я хочу сделать полноценный инструмент (конечно, не как PowerGREP, но рядом).

Первый вопрос, который я не могу решить:
Хочу, чтобы при нажатии кнопки "Найти" найденные фрагменты в левом Edit'e подсвечивались желтым цветом. Подскажите, как это сделать?
 

kaster

Мой Аватар, он лучший самый
Команда форума
Глобальный модератор
Сообщения
4,020
Репутация
626
Suppir [?]
Хочу, чтобы при нажатии кнопки "Найти" найденные фрагменты в левом Edit'e подсвечивались желтым цветом. Подскажите, как это сделать?
к сожалению, штатными средствами задать разное форматирование для фрагментов текста в контролах, как мне помнится, нельзя. Но есть классная либа от участника оффорума c.haslam'a, попробуй. думаю разберешься. правда тогда придется перелопачивать весь код, чтобы можно было переформатировать текст.
Rich Edit UDF
 

CreatoR

Must AutoIt!
Команда форума
Администратор
Сообщения
8,671
Репутация
2,481
Kaster [?]
штатными средствами задать разное форматирование для фрагментов текста в контролах, как мне помнится, нельзя.
Для Edit-элемента да, это верно, но для Label например есть GUICtrlCreateTFLabel - Создание форматированного элемента Label.

есть классная либа от участника оффорума c.haslam'a
Оно(?) есть и у нас: _GUICtrlRichEdit UDF - Создание RichEdit-элемента
 
Верх