如何使用正则表达式查找以 [ 开头并以 ] 结尾的字符串,中括号内可以包含任意字符。
[
and ]
是正则表达式中的特殊字符,因此您需要对它们进行转义处理。以下代码应该适用于您:
[
和 ]
是正则表达式中的特殊字符,所以您需要对它们进行转义处理。这个方法适合你:
\[.*?\]
.*?
匹配任意字符,且为非贪婪模式。非贪婪模式可以确保匹配到 [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 ]
*
比thecoop的+
更适合。 - Bazzz这应该可以工作:
^\[.+\]$
^
表示字符串的开头
\[
是转义字符,因为[是控制字符
.+
匹配所有长度大于等于1的字符串(.
表示任意字符,+
表示匹配前一个模式一次或多次)
\]
是转义字符
$
表示字符串的结尾
如果想要匹配[]
,将+
改为*
('匹配零个或多个')
然后使用Regex
类进行匹配:
bool match = Regex.IsMatch(input, "^\[.+\]$");
如果您需要多次使用此功能或在循环中使用它,请创建一个Regex
实例,以提高性能:
private static readonly Regex s_MyRegexPatternThingy = new Regex("^\[.+\]$");
bool match = s_MyRegexPatternThingy.IsMatch(input);
如果你想在括号中使用至少一个字符,那么你需要使用转义字符\
。如果你想要至少一个字符,可以使用.+
;如果你接受这个字符串:[]
,那么可以使用.*
。
^\[.*\]$