2015-07-20 263 views
2

幫我決定TCL中的一個問題。 通過使用我的宏我想找到字符串,其中包含兩個星號(**)。 我試圖用下面的命令:TCL中的兩個星號串匹配

string match \*\* string_name 

但它不起作用。你能解釋我在哪裏犯了一個錯誤,以及如何正確地做到這一點?

在此先感謝!

回答

3

實際傳遞給口譯員的是string match ** string_name。您需要將實際反斜槓傳遞給解釋,以便它然後將知二逃脫星號,要做到這一點,你需要添加一對夫婦更反斜線:

string match \\*\\* $s 

還是用括號:

string match {\*\*} $s 

請注意,如果$s包含2個星號,則上述內容僅匹配,而沒有其他內容。要允許之前和星號後,您可以使用多個星號什麼...

string match {*\*\**} $s 

還有一些其他的方法來檢查,如果一個字符串有雙星號,例如你可以使用string first(而且由於這一個不支持表達式,你其實可以逃脫,而無需任何逃生):

string first ** $s 

如果你得到的東西比-1時,則**存在於$s

或者,如果你碰巧知道一些規則表達式:

regexp -- {\*\*} $s 

這些都是最常見的,我認爲。

+2

這個正則表達式反斜槓-Y:'{[*] [*]}' –

+0

@glennjackman同意,儘管時間更長。與[{[*] {2}}類似的一個'​​ – Jerry

+0

傑裏,非常感謝您的幫助!你幫了我很多! –