我的字符串可能会或可能不会被括号括起来
string a = "[Hello world]";
string b = "Hello world";
只要字符串包含[],以下正则表达式返回true,但这不是目标:)
var c = "hello[ ]world";
var isCommandArray = Regex.IsMatch(c, @"\[.*?\]"); // returns true
由于
答案 0 :(得分:5)
如果您允许其他括号位于中间,则不必使用Regex
:
bool isBracketed = s.StartsWith("[") && s.EndsWith("]");
如果你不允许中间的其他括号,你仍然可以这样做:
bool isBracketed = s.LastIndexOf("[") == 0 && s.IndexOf("]") == s.Length - 1;
答案 1 :(得分:2)
使用^
开始模式,使用$
开始模式结束。
var isCommandArray = Regex.IsMatch(c, @"^\[.*?\]$")
答案 2 :(得分:1)
您需要对正则表达式进行编码,使其与字符串的开头和结尾相匹配。
^\[.*?\]$
^
表示字符串的开头,$
表示结束。
如果你想在大括号周围留出空格,你可以添加\s
:
^\s*\[.*?\]\s*$