Автор Тема: Программа для поиска-замены с помощью регулярных выражений  (Прочитано 4536 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Suppir [?]

  • Продвинутый
  • ***
  • Сообщений: 967
  • Репутация: 61
    • Награды
Добрый день!

Решил поизучать 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

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

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



Русское сообщество AutoIt


Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
Suppir  [?]
Цитировать
Хочу, чтобы при нажатии кнопки "Найти" найденные фрагменты в левом Edit'e подсвечивались желтым цветом. Подскажите, как это сделать?
к сожалению, штатными средствами задать разное форматирование для фрагментов текста в контролах, как мне помнится, нельзя. Но есть классная либа от участника оффорума c.haslam'a, попробуй. думаю разберешься. правда тогда придется перелопачивать весь код, чтобы можно было переформатировать текст.
Rich Edit UDF
« Последнее редактирование: Ноябрь 03, 2009, 13:59:28 от Medic84 »
Конференция посвященная AutoIt на jabber.ru - [email protected]
Как попасть на конференцию читаем тут


Оффлайн CreatoR [?]

  • Администратор
  • *
  • Сообщений: 7827
  • Репутация: 2288
  • Пол: Мужской
  • AutoIt is simple, subtle, elegant
    • CreatoR's Lab
    • Награды
  • Версия AutoIt: 3.3.10.2
Kaster [?]
Цитировать
штатными средствами задать разное форматирование для фрагментов текста в контролах, как мне помнится, нельзя.
Для Edit-элемента да, это верно, но для Label например есть GUICtrlCreateTFLabel - Создание форматированного элемента Label.

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


Правила, Поиск, Супер тема


AutoIt is simple, subtle, elegant.


«Не оказываю тех. поддержку через ПМ/ICQ, и по электронной почте - для этого есть форум. (C)»
«Законы Мэрфи неоспоримы!»


Мои работы

Оффлайн Kaster [?]

  • Бритва, Бритва Оккама
  • Глобальный модератор
  • *
  • Сообщений: 4020
  • Репутация: 622
  • Пол: Мужской
  • Мой Аватар, он лучший самый
    • Награды
  • Версия AutoIt: 3.3.14.0
CreatoR  [?]
Цитировать
Оно(?)
:-[


Русское сообщество AutoIt


 

Похожие темы

  Тема / Автор Ответов Последний ответ
14 Ответов
6168 Просмотров
Последний ответ Февраль 03, 2012, 15:23:34
от ivsatel
7 Ответов
3498 Просмотров
Последний ответ Август 25, 2012, 17:59:14
от DarWiM
9 Ответов
6969 Просмотров
Последний ответ Ноябрь 28, 2012, 22:18:04
от glax24
0 Ответов
1572 Просмотров
Последний ответ Ноябрь 27, 2012, 00:29:18
от madmasles
2 Ответов
4186 Просмотров
Последний ответ Апрель 16, 2013, 19:43:52
от Arei
19 Ответов
7120 Просмотров
Последний ответ Март 06, 2014, 13:40:36
от firex
0 Ответов
1246 Просмотров
Последний ответ Январь 20, 2014, 16:22:08
от madmasles
1 Ответов
1053 Просмотров
Последний ответ Май 20, 2015, 19:48:22
от alex33
12 Ответов
4472 Просмотров
Последний ответ Июль 09, 2015, 14:15:56
от InnI
3 Ответов
1519 Просмотров
Последний ответ Июнь 08, 2016, 21:43:50
от Alofa