1 (изменено: avens, 2015-04-24 23:01:38)

Тема: AHK: Удалить комментарии в CSS файле

Необходимо удалить комментарии в CSS файле с помощью регулярного выражения.
Вот пример:

Var =
(
/* =Media Queries   (max-width: 959px)
----------------------------------------------- */
@media only screen and (max-width: 959px) {
    .site-header .home-link,
    .navbar,
    .main-navigation,
    /* .site-main,   \*  */
    .site-footer,
    .site-footer .sidebar-inner,
    .site-info {
        width: 768px;
        /* hright: 100px;     */
    }
}
)

Var := RegExReplace(Var, "/\*.*?\*/") ; Удалить комментарии

Var := RegExReplace(Var, "`n*") ; Удалить переводы строк

MsgBox %Var%

А вот здесь тот же код только, загружает содержимое из файла, и почему то не работает.
Что тому может быть причиной? Использую AutoHotkey Unicode

FileRead, Var, %A_Desktop%\111.css

Var := RegExReplace(Var, "/\*.*?\*/")

;Var := RegExReplace(Var, "`n*")

MsgBox %Var%

2

Re: AHK: Удалить комментарии в CSS файле

Наверное имеет смысл сам файл выложить.

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

3

Re: AHK: Удалить комментарии в CSS файле

Файл с тем же содержимым, что и в переменной в первом примере.

Post's attachments

111.css 333 b, 3 downloads since 2015-04-24 

You don't have the permssions to download the attachments of this post.

4

Re: AHK: Удалить комментарии в CSS файле

Так попробуйте:

Var := RegExReplace(Var, "s)/\*.*?\*/")

По умолчанию точка является любым символом, кроме переноса строки.

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

5 (изменено: Malcev, 2015-04-24 22:26:39)

Re: AHK: Удалить комментарии в CSS файле

По умолчанию точка является любым символом, кроме переноса строки.

По-моему формулировка неправильная.
Правильно так: По умолчанию точка является любым символом, кроме "возврата каретки".

FileRead, Var, %A_Desktop%\111.css
msgbox % Var := RegExReplace(Var, "`n)/\*.*?\*/")

6

Re: AHK: Удалить комментарии в CSS файле

Правильно так:

By default, a dot matches any single character which is not part of a newline (`r`n) sequence

Где там о возврате каретки сказано?
А мой вариант не работает?

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

7 (изменено: Malcev, 2015-04-24 22:55:55)

Re: AHK: Удалить комментарии в CSS файле

Ну да, вот у них точно написано. Это я с \r ошибся.
Хорошо было бы подправить русский хелп.
А то из-за неточных формулировок возникает путанница.
Сравни:

By default, a dot matches any single character which is not part of a newline (`r`n) sequence
Точка соответствует любому отдельному символу (исключая символы новой строки: `r и `n).

8

Re: AHK: Удалить комментарии в CSS файле

teadrinker пишет:

Так попробуйте:

Var := RegExReplace(Var, "s)/\*.*?\*/")

По умолчанию точка является любым символом, кроме переноса строки.

Благодарю!
Этот вариант работает

9

Re: AHK: Удалить комментарии в CSS файле

Даже не знаю, как перевести, чтоб было окончательно ясно. Смысл в том, что если перенос строки представлен в виде одиночного символа, тогда точка соответствует, если в виде последовательности, тогда нет.

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

10

Re: AHK: Удалить комментарии в CSS файле

Может так: По умолчанию точка является любым символом, кроме переноса строки, представленным в виде последовательности (`r`n).

11

Re: AHK: Удалить комментарии в CSS файле

Некорректно, `r`n — это два символа, а не один.

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

12 (изменено: ypppu, 2015-04-25 13:27:10)

Re: AHK: Удалить комментарии в CSS файле

#EscapeChar пишет:

Escape-последовательности
`t горизонтальная табуляция
`n перевод строки (LF).
`r возврат каретки (CR)


По умолчанию точка соответствует любому одиночному символу, не входящему в "последовательность новой строки" (`r`n).

Так правильно, но то, что в кавычках, по-русски звучит коряво. По-моему, лучше писать прямо так:

  • `r`n -последовательность

  • комбинация `r`n

13

Re: AHK: Удалить комментарии в CSS файле

Проблема в том, что выражение «не входящего в последовательность `r`n» можно понять, как «любой из символов из `r`n».

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

14

Re: AHK: Удалить комментарии в CSS файле

Проблема в том, что выражение «не входящего в последовательность `r`n» можно понять, как «любой из символов из `r`n».

А это не соответствует действительности?

15

Re: AHK: Удалить комментарии в CSS файле

Вот пример:

str1 := "abc`ndef"
str2 := "abc`rdef"
str3 := "abc`r`ndef"

Loop 3  {
   RegExMatch(str%A_Index%, ".*", match)
   MsgBox, % match
}

Как видим, если знак переноса представлен одним символом, точка находит соответствие, если двумя — то нет.

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

16 (изменено: ypppu, 2015-04-25 14:13:02)

Re: AHK: Удалить комментарии в CSS файле

Так это вроде и называется любой одиночный символ, не входящий в `r`n sequence.
А, наверно правильнее перевести "не являющийся частью `r`n sequence".

17

Re: AHK: Удалить комментарии в CSS файле

В чём была проблема у ТС? Он использует AHK-Unicode. В юникоде при записи

str = 
(
abc
def
)

перевод строки считывается, как `n, и соответствие находится:

str = 
(
abc
def
)

RegExMatch(str, ".*", match)
MsgBox, % match

Однако файл, с которого считывались данные, был в ANSI, а там перевод строки `r`n, и соответствия не находилось.

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

18

Re: AHK: Удалить комментарии в CSS файле

А, наверно правильнее перевести "не являющийся частью `r`n sequence".

Так о том и речь, что это можно понять неверно, как «не являющийся одним из "`r`n"».

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

19

Re: AHK: Удалить комментарии в CSS файле

teadrinker пишет:

Однако файл, с которого считывались данные, был в ANSI, а там перевод строки `r`n, и соответствия не находилось.

Впервые слышу, что между кодировкой файла и кодированием новой строки есть какая-то связь. Или что ты имеешь в виду?

20

Re: AHK: Удалить комментарии в CSS файле

Так посмотри на вопрос ТС. Ему было непонятно, почему, если считывать текст из файла, соответствия не находится, а если просто записать строку текстом в скрипте — находится.

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

21

Re: AHK: Удалить комментарии в CSS файле

А, понятно. Но тут ведь дело не в кодировке.

22

Re: AHK: Удалить комментарии в CSS файле

А, действительно, в текстовом файле в любом случае перевод строки как `r`n записывается.

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