如何匹配Tcl中的以下字符串?

时间:2013-06-10 18:04:40

标签: regex tcl

我有一个字符串:

"[01][03].name.firstname     = 1"

我尝试使用以下内容来匹配它: “\[01\]\[03\].name\.firstname\s*=\s*1"但它不起作用,如何匹配字符串?

1 个答案:

答案 0 :(得分:3)

你必须小心如何引用模式:

set s {[01][03].name.firstname     = 1}
regexp {\[01\]\[03\].name\.firstname\s*=\s*1} $s      ;# true
regexp "\[01\]\[03\].name\.firstname\s*=\s*1" $s      ;# false

请注意,使用双引号时,如果不反斜杠 - 转义反斜杠,则会发生这种情况:

% puts "\[01\]\[03\].name\.firstname\s*=\s*1" 
[01][03].name.firstnames*=s*1

所以你的模式不是你想象的那样。

如果您某某需要使用双引号,则需要大量反斜杠

regexp "\\\[01]\\\[03]\\.name\\.firstname\\s*=\\s*1" $s