RegEx以结尾

什么是正则表达式来查找以[并以]结尾的字符串。 在[和]之间所有的角色都很好。

[]是正则表达式中的特殊字符,因此您需要转义它们。 这应该适合你:

 \[.*?\] 

.*? 对任何角色进行非贪婪的匹配。 非贪婪的方面确保您将匹配[abc]而不是[abc]def] 。 如果你想匹配整个字符串,添加一个前导^和尾随$ ,例如在abc[def]ghi根本没有匹配。

 ^\[.*\]$ 

将匹配以[[结尾]开头的字符串。 在C#中:

 foundMatch = Regex.IsMatch(subjectString, @"^\[.*\]$"); 

如果你在较长的字符串中寻找括号分隔的字符串(例如在foo [bar] baz查找[bar] ),那么使用

 \[[^[\]]*\] 

在C#中:

 MatchCollection allMatchResults = null; Regex regexObj = new Regex(@"\[[^[\]]*\]"); allMatchResults = regexObj.Matches(subjectString); 

说明:

 \[ # match a literal [ [^[\]]* # match zero or more characters except [ or ] \] # match a literal ] 

这应该工作:

 ^\[.+\]$ 

^是’字符串的开头’
\[是逃脱的[,因为[是一个控制角色
.+匹配长度> = 1的所有字符串( .是’任意字符’, +表示’匹配先前模式一次或多次’)
\]是逃脱的]
$是’字符串的结尾’

如果您想匹配[] ,请将+更改为* (’匹配零次或多次’)

然后使用Regex类匹配:

 bool match = Regex.IsMatch(input, "^\[.+\]$"); 

或者,如果您多次使用或循环使用,请创建一个Regex实例以获得更好的性能:

 private static readonly Regex s_MyRegexPatternThingy = new Regex("^\[.+\]$"); bool match = s_MyRegexPatternThingy.IsMatch(input); 

您需要使用转义字符\作为括号。
如果你想在括号之间至少有1个字符,请使用.+ .*如果你接受这个字符串: []

 ^\[.*\]$