次のような文字列があります。
"[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