0

我有一个像这样的字符串:

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

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

4

1 回答 1

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 
于 2013-06-10T18:19:18.067 回答