我有一个字符串:
"[01][03].name.firstname = 1"
我尝试使用以下内容来匹配它:
“\[01\]\[03\].name\.firstname\s*=\s*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