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 に答える