Как использовать regsub в tcl

#regex #tcl

Вопрос:

Я заменял не буквенно-цифровой символ, такой как . etc, с помощью команды regsub, и это не помогает. Не могли бы вы, пожалуйста, помочь мне

Текст:

 This is the new begin.With old memories
 

Необходимо заменить "." на .
Ожидаемый:

 This is the new begin.With old memories
 

Пытается с

 regsub -all {.\} $string {.}
 

Заранее спасибо

Комментарии:

1. Для буквальных строк, string map возможно, было бы лучше.

2. В чем на самом деле проблема? Какой вывод на самом деле дает вам regsub?

3. Имейте в виду, что строка замены не является шаблоном, это буквальная строка. Вместо {.} того, чтобы просто использовать {.} -я подозреваю, что ваша «проблема» в том, что вы видите вывод This is the new begin.With old memories с обратной косой чертой перед точкой.

Ответ №1:

Как сказал Донал, просто используйте строковую карту, например

 % set a {This is the new begin.With old memories}
This is the new begin.With old memories
% string map {.\ .} $a
This is the new begin.With old memories
 

Как вы можете видеть, мне пришлось избежать обратной косой черты со второй обратной косой чертой.