|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » [решено] В помощь по функциям StringRegExp и StringRegExpReplace |
|
[решено] В помощь по функциям StringRegExp и StringRegExpReplace
|
Старожил Сообщения: 307 |
Профиль | Отправить PM | Цитировать
В регулярных выражениях я пока новичок, и для изучения именно на применении их в Autoit-овских функциях StringRegExp и StringRegExpReplace я набросал для себя програмку где два окна(переключение между окнами идет по кнопке соответствующей): одно на функцию StringRegExp, второе - на функцию StringRegExpReplace. Поля ввода соответствуют описанию в справке Autoit:
StringRegExp ( "test", "pattern" [, flag ] [, offset ] ] ) StringRegExpReplace ( "test", "pattern", "replace", [ count ] ) Конечно ничего особенного, но может кому из новичков пригодится. #include <EditConstants.au3> #include <GUIConstantsEx.au3> #include <WindowsConstants.au3> #include <Array.au3> ;Создание окна для функции StringRegExpReplace $hForm = GUICreate("StringRegExpReplace( Test, Pattern, Replace, [count])", 662, 521, 233, 157,$WS_SIZEBOX) GUISetBkColor(0x00E0FFFF) ; will change background color $Edit_test=GUICtrlCreateEdit("", 0, 69, 661, 205, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_WANTRETURN)) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") $Edit_rezultat=GUICtrlCreateEdit("", 0, 297, 661, 113, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_WANTRETURN)) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x800000) $Ok_button=GUICtrlCreateButton("Произвести поиск ", 0, 464, 661, 27) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetResizing(-1, $GUI_DOCKHEIGHT) $Button_pereklyuchenie = GUICtrlCreateButton("StringRegExp >>", 560, 48, 100, 20,0) $Button_Clean = GUICtrlCreateButton("Очистить", 584, 275, 76, 20,0) $Label1 = GUICtrlCreateLabel("Pattern (Искомый образец (шаблон) )", 0, 416, 240, 15) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $Label2 = GUICtrlCreateLabel("Результат поиска/замены", 2, 276, 148, 21) GUICtrlSetFont(-1, 9, 400, 2, "Comic Sans MS") GUICtrlSetColor(-1, 0x000080) $Label3 = GUICtrlCreateLabel("Test (Исходный текст)", 1, 48, 357, 21) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $Label4 = GUICtrlCreateLabel("Replace (Текст замены)", 1, 1, 357, 21) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $Label5 = GUICtrlCreateLabel("Count", 624, 1, 521, 21) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $input_replase=GUICtrlCreateInput("\1", 0, 15, 621, 32) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x0000FF) $input_count=GUICtrlCreateInput("0", 624, 15, 35, 32) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x0000FF) $input_pattern=GUICtrlCreateInput("", 0, 432, 661, 32) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x0000FF) ;Создание окна для функции StringRegExp $2hForm = GUICreate("StringRegExp (Test, Pattern, [flag],[ offset])", 662, 521, 233, 157,$WS_SIZEBOX) GUISetBkColor(0x00E0FFFF) ; will change background color $2Edit_test=GUICtrlCreateEdit("", 0, 69, 661, 205, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_WANTRETURN)) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") $2Edit_rezultat=GUICtrlCreateEdit("", 0, 297, 661, 113, BitOR($ES_AUTOVSCROLL, $WS_VSCROLL, $ES_WANTRETURN)) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x800000) $2Ok_button=GUICtrlCreateButton("Произвести поиск ", 0, 464, 661, 27) GUICtrlSetFont(-1, 12, 800, 0, "MS Sans Serif") GUICtrlSetResizing(-1, $GUI_DOCKHEIGHT) $2Button_pereklyuchenie = GUICtrlCreateButton("StringRegExpReplace >>", 535, 48, 125, 20,0) $2Button_Clean = GUICtrlCreateButton("Очистить", 584, 275, 76, 20,0) $2Label1 = GUICtrlCreateLabel("Pattern (Искомый образец (шаблон) )", 0, 416, 240, 15) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $2Label2 = GUICtrlCreateLabel("Результат поиска", 2, 276, 148, 21) GUICtrlSetFont(-1, 9, 400, 2, "Comic Sans MS") GUICtrlSetColor(-1, 0x000080) $2Label3 = GUICtrlCreateLabel("Test (Исходный текст)", 1, 48, 357, 21) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $2Label4 = GUICtrlCreateLabel("Flag", 1, 1, 357, 21) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $2Label5 = GUICtrlCreateLabel("Offset", 624, 1, 521, 21) GUICtrlSetFont(-1, 9, 400, 2) GUICtrlSetColor(-1, 0x000080) $2input_flag=GUICtrlCreateInput("3", 0, 15, 621, 32) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x0000FF) $2input_offset=GUICtrlCreateInput("1", 624, 15, 35, 32) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x0000FF) $2input_pattern=GUICtrlCreateInput("", 0, 432, 661, 32) GUICtrlSetFont(-1, 14, 0, 0, "MS Sans Serif") GUICtrlSetColor(-1, 0x0000FF) GUISetState(@SW_SHOW,$hForm) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $GUI_EVENT_CLOSE Exit Case $Ok_button ;окно функции StringRegExpReplace _onbuttonOk() Case $2Ok_button ;окно функции StringRegExp _onbuttonOk2() Case $Button_Clean ;очистить поле ввода текста GUICtrlSetData($Edit_test,"") Case $2Button_Clean ;очистить поле ввода текста GUICtrlSetData($2Edit_test,"") Case $Button_pereklyuchenie _Setokno() ;переключение на второе окно и соответственно к функци StringRegExp Case $2Button_pereklyuchenie _Setokno2() ;возвращение к первому окну и соответственно к функции StringRegExpReplace EndSwitch WEnd ;функция при нажатии на кнопку Произвести поиск в окне функции StringRegExpReplace Func _onbuttonOk() $get_count = GUICtrlRead($input_count) $array_rezultat = StringRegExpReplace((GUICtrlRead($Edit_test)), (GUICtrlRead($input_pattern)),(GUICtrlRead($input_replase)), $get_count) If @error = 0 Then $get_count = @extended EndIf GUICtrlSetData($Edit_rezultat,$array_rezultat) EndFunc ;функция при нажатии на кнопку Произвести поиск в окне функции StringRegExp Func _onbuttonOk2() $nOffset = GUICtrlRead($2input_offset) $nflag=GUICtrlRead($2input_flag) Switch $nflag Case 0 $2array_rezultat = StringRegExp((GUICtrlRead($2Edit_test)), (GUICtrlRead($2input_pattern)),$nflag, $nOffset) If @error = 0 Then $nOffset = @extended EndIf if $2array_rezultat=1 then GUICtrlSetData($2Edit_rezultat, "Есть совпадение") else GUICtrlSetData($2Edit_rezultat, "Совпадений нету") endif Case 1 Local $ar[100],$i=0 While 1 $2array_rezultat = StringRegExp((GUICtrlRead($2Edit_test)), (GUICtrlRead($2input_pattern)),$nflag, $nOffset) If @error = 0 Then $nOffset = @extended Else ExitLoop EndIf $ar[$i]=$2array_rezultat[0] $i=$i+1 WEnd $sAr_to_string=_ArrayToString($ar, @CRLF, 0, $i-1) GUICtrlSetData($2Edit_rezultat, $sAr_to_string) Case 3 $2array_rezultat = StringRegExp((GUICtrlRead($2Edit_test)), (GUICtrlRead($2input_pattern)),$nflag, $nOffset) If @error = 0 Then $nOffset = @extended EndIf $sAr_to_string=_ArrayToString($2array_rezultat, @CRLF, 0, UBound($2array_rezultat) - 1) GUICtrlSetData($2Edit_rezultat,$sAr_to_string) Case 4 Local $ar[100],$k=0 $2array_rezultat = StringRegExp((GUICtrlRead($2Edit_test)), (GUICtrlRead($2input_pattern)),$nflag, $nOffset) If @error = 0 Then $nOffset = @extended EndIf for $i = 0 to UBound($2array_rezultat) - 1 $match = $2array_rezultat[$i] for $j = 0 to UBound($match) - 1 $ar[$k]=$match[$j] $k=$k+1 Next Next $sAr_to_string=_ArrayToString($ar, @CRLF, 0, $k-1) GUICtrlSetData($2Edit_rezultat,$sAr_to_string) EndSwitch EndFunc ;_onbuttonOk2() ;переключение на второе окно и соответственно к функци StringRegExp Func _Setokno() GUISetState(@SW_HIDE,$hForm) GUISetState(@SW_SHOW,$2hForm) ;GUICtrlSetData($2Button_pereklyuchenie,"StringRegExpReplace >>") EndFunc ;переключение на первое окно и соответственно к функци StringRegExpReplace Func _Setokno2() GUISetState(@SW_HIDE,$2hForm) GUISetState(@SW_SHOW,$hForm) EndFunc Добавлено: Скрипт нужно запустить в SciTe или откомпилировать в exe файл и потом запустить... |
|
------- Отправлено: 23:59, 18-02-2009 |
Ветеран Сообщения: 838
|
Профиль | Отправить PM | Цитировать Помгите, только не ругайтесь! Как вообще это работает, ибо я ничего не понимаю...
$x = RegRead("HKLM\Software\ax","") $y = StringRegExpReplace($x,"{x}","") RegWrite("HKLM\Software\ax","","REG_SZ",$y) Exit Например, убрать из строки "1111-1111-111-11111-0" всё знаки "-", и заодно другие паттерны прощупать... В примерах неужели нельзя без While итп. конструкций обойтись итак нифига не понятно! Вот у мну пример простой, как и нужно, только что-то не работает. Может в $y флаги чтоль возвращает, а как тогда со строкой работать? И в чём разница StringRegExpReplace vs StringRegExp - только первая чтоли диструктивно работает? ПС. Ничего себе примерчег для новичков, который тут надо мной - это уже целая утилита, но не пример! А ну всё допилил! [resheno] |
------- Последний раз редактировалось semiono, 19-02-2009 в 11:47. Отправлено: 10:51, 19-02-2009 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Googler Сообщения: 3665
|
Профиль | Отправить PM | Цитировать Цитата semiono:
Цитата semiono:
|
||
Отправлено: 12:49, 19-02-2009 | #3 |
Ветеран Сообщения: 838
|
Профиль | Отправить PM | Цитировать От того что парсит, толку мало для стратегических задач
Но наверно с логическими построениями может и быть толк реальный, наверно... не только информационый! |
------- Отправлено: 20:56, 19-02-2009 | #4 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
[решено] StringRegExp не работает? %) | Freesty1er | AutoIt | 4 | 26-01-2022 09:26 | |
[решено] Нужна помощь с StringRegExpReplace ( "test", "PATTERN-ом", "\1"). | ikif | AutoIt | 6 | 28-07-2009 20:06 | |
[решено] Ищу русскую справку по AutoIT по функциям IEx | ZeroCrash | AutoIt | 19 | 01-07-2009 10:57 | |
[решено] И снова stringRegExpReplace... | Twix1124 | AutoIt | 6 | 01-06-2009 03:49 | |
[решено] Хелп с StringRegExpReplace | xSpaiderx | AutoIt | 8 | 31-03-2009 23:16 |
|