2013-01-01 58 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

相关问题