搜索文件内容以删除具有 $DEBUG 字符的预编译指令之间的行。
数据线搜索的典型模式:
#IFDEF $DEBUG_MY_TEST
.... lines ...
#ENDIF
#IFDEF DEBUG_MY_issues for_sam
.... lines ...
#ENDIF
#IFDEF CMER for_max
.... lines ....
#ENDIF
此表达式测试有效:
if { [regexp -lineanchor -nocase -- {^[ \t]*#IFDEF[ \t]+[\$]?DEBUG.*} $oline_strpd ] == 1 } {
set remove_to_cust_endif $oline_strpd; # sanity check
continue;
}
我相信问题在于使用$
字符串变量模式中的字符。
使用此字符串变量方法进行搜索不起作用?:
set RE_STRNG [format "\{^\[ \\t\]*#IFDEF\[ \\t\]+\[\\$\]?DEBUG.*\}"]
if { [regexp -lineanchor -nocase -- $RE_STRNG $oline_strpd ] == 1 } {
set remove_to_cust_endif $oline_strpd; # sanity check
continue;
}
在代码的前一行中,使用此字符串变量方法正在工作:
set RE_STRNG [format "\{^\[ \\t\]*#IFDEF\[ \\t\]+CMER\[ \\t\]+%s\}" $is_cmer_name ]; # insert name into the search pattern
if { [regexp -lineanchor -nocase -- $RE_STRNG $oline_strpd ] == 1 && [llength $oline_strpd] == 3 } {
set print_to_cust_endif $oline_strpd; # sanity check
continue;
}