我有一个像这样的字符串:
"[01][03].name.firstname = 1"
我尝试使用以下内容来匹配它:“\[01\]\[03\].name\.firstname\s*=\s*1"
但它不起作用,如何匹配字符串?
您必须小心引用模式的方式:
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