Что нового

[Криптография] Удаление строки текста в StringRegExpReplace

Ksaan

Знающий
Сообщения
207
Репутация
15
Кто понимает в выражениях StringRegExpReplace я так и не разобрался, пытался реализовать все другими функциями, и вроде все получилось, но текст у функции получился очень большой и стал тормозить. И вот вопрос, как в тексте
Код:
"+ 12 -3" & @CRLF & "delay" & @CRLF & " + 1 + 14" & @CRLF

последнюю строку до переноса строки?

P.S пишу с телефона потом тему отредактирую
 

AZJIO

Меценат
Меценат
Сообщения
2,874
Репутация
1,194
Код:
$s = "+ 12 -3" & @CRLF & "delay" & @CRLF & " + 1 + 14" & @CRLF
$s = StringRegExp($s, '(?s)\r\n([^\r\n]*?)\r\n\z', 1)
If Not @error Then MsgBox(0, 'Отладчик', $s[0])
; MsgBox(0, 'Сообщение', @error)
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Ksaan
Объясните подробнее что и как удалять?
Как я понял, последнюю @CRLF в самом конце трогать не надо?
 
Автор
Ksaan

Ksaan

Знающий
Сообщения
207
Репутация
15
Z_Lenar сказал(а):
Ksaan
Объясните подробнее что и как удалять?
Как я понял, последнюю @CRLF в самом конце трогать не надо?
Должна удаляться последняя строчка текста, но текст произвольный. Тоесть должно получится
$s = "+ 12 -3" & @CRLF & "delay" &
@CRLF
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Код:
; пробел и табуляция считаются текстом
ConsoleWrite(StringRegExpReplace("+ 12 -3" & @CRLF & "delay" & @CRLF & " + 1 + 14" & @CRLF & @TAB & @CRLF & @CRLF, "([[:print:]\t]+)[[:cntrl:]]{0,2}(?=[^[:print:]\t]*)$", ''))
 
Автор
Ksaan

Ksaan

Знающий
Сообщения
207
Репутация
15
Так, все есть интернет можно подробнее
Код:
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>

Global $iCount
GUICreate('GUI', 300, 225)
$myedit = GUICtrlCreateEdit("+ 12 -3" & @CRLF & "delay" & @CRLF & " QWERTY" , 48, 16, 185, 89 , BitOR($ES_READONLY, $ES_WANTRETURN, $WS_VSCROLL, $ES_AUTOVSCROLL, $ES_NOHIDESEL))
$a1 = GUICtrlCreateButton ("1", 10, 150, 55, 35);1
GUISetState()
While 1
 Switch GUIGetMsg()
 Case $GUI_EVENT_CLOSE
 Exit
 Case $a1
 _RedactTexta()
EndSwitch
WEnd
Func _RedactTexta()
 ;Нужная функция
EndFunc ;==>_RedctTexta

Нужно что бы при каждом нажатий кнопки удалялась строка текста, но каждый новый текст начинался с новой строки.
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Ksaan
Тот пример который был выше чем не подходит?
 
Автор
Ksaan

Ksaan

Знающий
Сообщения
207
Репутация
15
Z_Lenar сказал(а):
Ksaan
Тот пример который был выше чем не подходит?
Не подходит тем что удаляет весь текст в поле Edit
Код:
Func _RedactTexta()
$s1 = StringRegExpReplace($myedit, "([[:print:]\t]+)[[:cntrl:]]{0,2}(?=[^[:print:]\t]*)$", '')
GUICtrlSetData($myedit, $s1)
EndFunc ;==>_RedctTexta
 

Z_Lenar

Продвинутый
Сообщения
209
Репутация
52
Код:
Func _RedactTexta()
; Считывать значение поля Edit - GUICtrlRead
$s1 = StringRegExpReplace(GUICtrlRead($myedit), "([[:print:]\t]+)[[:cntrl:]]{0,2}(?=[^[:print:]\t]*)$", '')
GUICtrlSetData($myedit, $s1)
EndFunc ;==>_RedctTexta
Так работает?
 
Верх