2015-01-07 2 views
1

Проблемы: есть строка с тегами (в LaTeX), и мне нужно заменить \ textbf {содержания} только с содержания с использованием TCL и только регулярных выражений (у меня TCL v8.4). Тег встречается несколько раз в строке.Заменить тега {содержимого} с его содержимым, используя TCL (несколько экземпляров)

Итак, вот что у меня есть:

Использование \ textbf {косинус} вместо \ textbf {синусоидальной} функций имеет решающее значение для сжатия, так как получается, что \ textbf {меньшее количество косинусных функций необходимо для аппроксимации типичного сигнала}.

Вот что я хочу:

Использование косинус, а не синус функций имеет решающее значение для сжатия, так как получается, что меньше косинусные функции необходимы, чтобы приблизить типичный сигнал.

Я понимаю, что I have to escape the special characters в regsub, но я не могу найти, как это сделать.

Вот то, что я до сих пор:

set project_contents {The use of \textbf{cosine} rather than \textbf{sine} functions is critical for compression, since it turns out that \textbf{fewer cosine functions are needed to approximate a typical signal}.} 

set match [ regexp -all -inline {\\textbf\x7B([^\x7D]*)\x7D} $project_contents ] 
foreach {trash needed_stuff} $match { 

regsub -- {\\textbf\{$trash\}} $project_contents $needed_stuff project_contents 
} 

, который находит помеченный текст (в $ помойку) и текст без тегов (в $ needed_stuff), но не заменяет их. Любая помощь приветствуется.

ответ

3

Ключевыми вещами, которые вы ищете, являются то, что RE должно быть в { скобках }, а буквальная обратная косая черта и фигурные скобки в RE должны быть обращены в обратную косую черту. Вы также хотите использовать не жадный квантор там и вариант -all к regsub:

set project_contents {The use of \textbf{cosine} rather than \textbf{sine} functions is critical for compression, since it turns out that \textbf{fewer cosine functions are needed to approximate a typical signal}.} 
set plain_text_contents [regsub -all {\\textbf\{(.*?)\}} $project_contents {\1}] 
puts $plain_text_contents 

Это производит этот выход:

 
The use of cosine rather than sine functions is critical for compression, since it turns out that fewer cosine functions are needed to approximate a typical signal. 

Что выглядит как-то, что вы хотите.

+0

О, вот и все! Большое спасибо, Донал !! – virens

Смежные вопросы