问题:有一个包含标签的字符串(在LaTeX中),我需要用内容替换 \ textbf {内容} 仅使用TCL和regexps(我有TCL v8.4)。标签在字符串中多次出现。
所以,这就是我所拥有的:
使用 \ textbf {cosine} 而不是 \ textbf {sine} 函数对于压缩至关重要,因为事实证明 \ textbf {less需要余弦函数来逼近典型信号} 。
这就是我想要的:
使用余弦而不是正弦函数对压缩至关重要,因为事实证明需要更少的余弦函数来逼近典型信号
我理解 regsub 中的I have to escape the special characters,但我找不到如何执行此操作。
这是我到目前为止所做的:
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
}
找到标记文本(在$ trash中)和没有标记的文本(在$ needed_stuff中),但不替换它们。非常感谢任何帮助。
答案 0 :(得分: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.
这看起来像你想要的东西。