regex - TCL——正则表达式匹配不正确
问题描述
set cell "HEADBUFTIE42D_D3_N"
set postfix "_M7P5TR_C60L08"
set line " cell(HEADBUFTIE42D_D3_N_M7P5TR_C60L08) { "
if {[regexp "^ +cell[(]$cell$postfix[)] *\\{" $line match]} {
puts "hello"
}
在这里我试图匹配这条线
cell(HEADBUFTIE42D_D3_N_M7P5TR_C60L08) {
请注意,开头有 2 个空格,之后有 1 个空格{
。
但比赛并没有发生。请帮忙
解决方案
您遇到的问题是没有正确转义正则表达式元字符({
没有被转义,然后[(]
正在尝试执行名为 的命令(
,等等)。如果你format
像这样使用它会更容易:
set cell "HEADBUFTIE42D_D3_N"
set postfix "_M7P5TR_C60L08"
set line " cell(HEADBUFTIE42D_D3_N_M7P5TR_C60L08) { "
set re [format {^ +cell\(%s%s\) *\{} $cell $postfix]
if {[regexp $re $line match]} {
puts "hello"
}
推荐阅读
- node.js - 导出动态变量
- visual-c++ - KDevelop (Win7) 下的 NMake:错误 LNK1104:无法打开文件 'kernel32.lib'
- cmake - CMake:无法创建目标,因为已经存在另一个同名目标
- geometry - 圆中的直角 T - 线条有多长?
- android - 以编程方式在 ImageView 上居中 TextView
- drools - Drools 的 collectSet 的意外行为和影响撤消动作的困难
- css - Safari: :before-element in column-count on wrong position (bug?)
- react-native - 如何在不调整大小、仅原始分辨率的情况下显示左上角 50x50 的图像?
- bash - 查找并统计结果,小于x则删除
- android - Android Studio 和实际设备中的文本大小