LINUX.ORG.RU

вопрос по регекспам в tcl

 , ,


0

1

Обнаружил одну фигню, и не уверен, что понимаю правильно.

set s [readFile tmp]
puts [regexp -inline foo.foo $s]
# out:
#  {foo
#  foo}
Файл у меня в cp-1251. Значит ли это, что в тикле точка матчит одинаковым образом и \n и \r\n?

ЗЫ И, кстати, насколько я понял, в многострочном режиме точка перестает матчить переносы строк, т.е. перестает считать их обычными символами, так?



Последнее исправление: linux-101 (всего исправлений: 2)

readFile у вас как устроена?

Если при чтении канал сконфигурирован с input translation auto или -translation crlf, тогда $s уже не будет содержать CR, и точка в обычном режиме будет матчить обычные \n, которые там останутся.

-translation и -encoding для канала настраиваются независимо (за исключением -translation binary, включающего -encoding binary). Умолчание для -tranlation у обычных файлов — как раз auto.

ЗЫ да, в regexp -line точка не заменяет конца строки (\n, именно \n, ни про какие \r\n regexp engine не знает).

LeninGad
()
Ответ на: комментарий от linux-101

Ну замечательно, -translation auto будет по умолчанию (но я бы всё-таки добавил fconfigure после open, для будущих читателей), а вот кодировка будет в соответствии с encoding system (если у вас русская винда, то и вправду cp1251).

LeninGad
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.