Ребят, подсобите с надёжной регуляркой.
Нужна такая, которая получая свой собственный код, не будет отрезать лишнее, а только лишь реальный комментарий. Следующий код вроде работает, но, всему этому, хотел бы найти регулярку:
; тестовые строки: CreateRegularExpression( #PB_Any, ";.*?$" ) ; Комментaрий ";';"";'';" ;""; ;"""; ;'; ;''; ;'''; ;; ;;; q CreateRegularExpression( #PB_Any, "^((?:[^"+#DQUOTE$+";~]*"+#DQUOTE$+"[^"+#DQUOTE$+"]*?"+#DQUOTE$+")*[^;~]*)\h*;.*?(?=\r?$)" ) ; Комментaрий ; Procedure.s DelComment(Line$) ; Комментaрий Protected New$ = "", i, Quote.a = #False ; Комментaрий For i = 1 To Len(Line$) ; Комментaрий Protected Char$ = Mid( Line$, i, 1 ) ; Комментaрий If Char$ = #DQUOTE$ ; Комментaрий If Not Quote : Quote = #True : Else : Quote = #False : EndIf ; Комментaрий ElseIf Char$ = ";" And Not Quote ; Комментaрий Break ; Комментaрий EndIf ; Комментaрий New$ + Char$ ; Комментaрий Next ; Комментaрий ProcedureReturn New$ ; Комментaрий EndProcedure If ReadFile(0, #PB_Compiler_File) ; Комментaрий Define Format = ReadStringFormat(0) ; отрезаем BOM, если есть While Eof(0) = 0 Debug DelComment( ReadString(0,Format) ) ; Комментaрий Wend ; Комментaрий CloseFile(0) ; Комментaрий Else ; Комментaрий MessageRequester("Инфо", "Невозможно открыть файл!") ; Комментaрий EndIf; Комментaрий
Отредактировано Webarion (30.12.2023 00:57:21)