2016-03-07 15 views
0

我想寫一個正則表達式測試一個變量開始與TCL一串字符,我寫了這個代碼,但它不工作正則表達式,如果開始用 {或」

if {[regexp {^\"\{.*} $data]} {puts "something" } 

* TCL中的字符串字符以{開頭(或「

+1

嘿,我不知道TCL,這可能是正常的,但是你沒有忘記關閉你的'[? – Aaron

+0

嘿謝謝我編輯@Aaron –

回答

1

」您需要選擇正確的正則表達式並正確使用它。如果先將RE存儲在一個變量中,特別是對於大型正則表達式,這可能會變得更加混亂,但即使在這種情況下,它也可以幫助您理解文字RE和它的使用方式之間的區別。

set RE {^[\"\{]} 
if {[regexp $RE $theString]} { 
    puts "something" 
} 

注意的Tcl默認情況下不錨定其重新匹配,所以你並不需要一個開頭或結尾.*如果你是只是確定是否RE匹配。

+0

嘿@Donal我試過了,但它沒有工作,我錯過了什麼? '%集theString 「你好」 你好 %集RE {^ [\ 「\ {]} ^ [\」 \ {]如果 %{[正則表達式$ RE $ theString]} {把 「真」} else {puts「false」} false %' –

+0

@RehamJf:你錯過了引號字符不是字符串的一部分。您的變量僅包含字符。 –

+0

@PeterLewerin哦!其實我的代碼是從文本文件中讀取,並檢查該行是否以字符串字符開頭,我認爲這種正則表達式的方式來檢查,但它看起來不是一個好主意!任何幫助以另一種方式做到這一點? –