2013-01-01 84 views
0

林具有可以或可以不被括號括起來的字符串正則表達式來測試字符串使用C#括在括號[]中

string a = "[Hello world]"; 
string b = "Hello world"; 

以下正則表達式返回只要真作爲字符串包含[],但這不是目標:)

var c = "hello[ ]world"; 
var isCommandArray = Regex.IsMatch(c, @"\[.*?\]"); // returns true 

感謝

+0

正則表達式在這裏真的不需要 – Anirudha

回答

2

使用^爲模式的開始和$爲模式的結束。

var isCommandArray = Regex.IsMatch(c, @"^\[.*?\]$") 
1

您需要對正則表達式進行編碼,以便它匹配字符串的開始和結束。

^\[.*?\]$ 

^表示字符串的開始,和$表示結束。

如果你想允許周圍的括號空白,你會增加\s

^\s*\[.*?\]\s*$ 
+0

如果你指定了開始和結束的錨點,我認爲你不需要懶惰的量詞'?'。 – Matthew

+0

@Mathew大概,我剛剛從OP的例子中把它留下了。 –

5

如果允許其他支架是在中間,你不必使用Regex

bool isBracketed = s.StartsWith("[") && s.EndsWith("]"); 

如果你不要允許在中間的其他括號,你仍然可以這樣做:

bool isBracketed = s.LastIndexOf("[") == 0 && s.IndexOf("]") == s.Length - 1; 
+1

+1這就是所謂的智慧:不要使用正則表達式,你不需要! –

+0

@CédricRup,我不同意。你應該儘可能經常使用正則表達式 –

+0

@Trikks http://i.imgur.com/nuEF0.png – Rotem

相關問題