1

Тема: AHK: Удаление закомментированных строк с помощью регулярных выражения

Как с помощью AHK удалить закомментированные строки вида // comment string?

buffer = 
(
string1
// comment string
// comment string
string2 // comment string
// comment string
string3
)

buffer := RegExReplace(buffer, "mi)//.+?$", "") ; Почему то не работает
MsgBox %buffer%

На выходе должно быть:

string1
string2
string3

2

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

Hi! В теории так:

buffer := RegExReplace(buffer, "mi)\/\/(.*)$", "")

3

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

alekksss пишет:

buffer := RegExReplace(buffer, "mi)\/\/(.*)$", "")

Не знаю, у меня этот код возвращает пустоту..
А у вас работает этот код?

4

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

У меня так работает:

buffer = 
(
string1
// comment string
// comment string
string2 // comment string
// comment string
string3
)

Loop, Parse, buffer, `n
{
var := RegExReplace(A_LoopField, "mi)\/\/(.*)$", "")
; If var ;Раскомментировать, если не нужны голые переносы строки
OutputVar .= var . "`n"
}
MsgBox, Результат:`r`n%OutputVar%

5

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

А у меня так:


buffer = 
(
string1
// comment string
// comment string
string2 // comment string
// comment string
string3
)

buffer := RegExReplace(buffer, "m`a)\R?//.+$", "")
MsgBox %buffer%

6

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

А у меня даже так:

buffer = 
(
string1
// comment string
// comment string
string2 // comment string
// comment string
string3
)

buffer := RegExReplace(buffer, "m`a)\R?//.*")
MsgBox %buffer%

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

7

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

Благодарю всех! Три рабочих примера, отлично
Хоть не понимаю почему не работает конструкция:

RegExReplace(buffer, "mi)//.+?$", "")

И что такое R в ваших примерах.

8

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

Это новая строка любого вида, из одного или двух символов. По умолчанию новой строкой считается комбинация `r`n, к ней привязывается символ $. Но секция продолжения (buffer в вашем примере) по умолчанию соединяет строки через `n. Поэтому концы строк у вас не находятся. Это решается опцией `a. При ней концом строки считается один или два символа.

9

Re: AHK: Удаление закомментированных строк с помощью регулярных выражения

Понял, благодарю!
Вот уж, а я читая справку и тыкал `a сюда а не в опции:
RegExReplace(buffer, "mi)//.+?`a", "")