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个字符,请使用.+
.*
如果你接受这个字符串: []
。
^\[.*\]$