mar*_*cog 25
[
并且]
是正则表达式中的特殊字符,因此您需要转义它们.这应该适合你:
\[.*?\]
Run Code Online (Sandbox Code Playgroud)
.*?
对任何角色进行非贪婪的匹配.非贪婪的方面确保您将匹配[abc]
而不是[abc]def]
.如果要匹配整个字符串,请添加前导^
和尾随$
,例如,根本不匹配abc[def]ghi
.
^\[.*\]$
Run Code Online (Sandbox Code Playgroud)
将匹配以开头[
和结尾的字符串]
.在C#中:
foundMatch = Regex.IsMatch(subjectString, @"^\[.*\]$");
Run Code Online (Sandbox Code Playgroud)
如果您正在寻找长字符串内支架分隔字符串(例如,发现[bar]
内foo [bar] baz
),然后使用
\[[^[\]]*\]
Run Code Online (Sandbox Code Playgroud)
在C#中:
MatchCollection allMatchResults = null;
Regex regexObj = new Regex(@"\[[^[\]]*\]");
allMatchResults = regexObj.Matches(subjectString);
Run Code Online (Sandbox Code Playgroud)
说明:
\[ # match a literal [
[^[\]]* # match zero or more characters except [ or ]
\] # match a literal ]
Run Code Online (Sandbox Code Playgroud)
这应该工作:
^\[.+\]$
Run Code Online (Sandbox Code Playgroud)
^
是'字符串的开头'
\[
是一个转义[,因为[是一个控制字符
.+
匹配所有字符串长度> = 1(.
是'任何字符',+
意思是'匹配先前的模式一次或多次')
\]
是一个转义]
$
是'结束字符串'
如果您想匹配[]
,请更改+
为a *
('匹配零次或多次')
然后使用Regex
该类匹配:
bool match = Regex.IsMatch(input, "^\[.+\]$");
Run Code Online (Sandbox Code Playgroud)
或者,如果您多次使用或循环使用,请创建一个Regex
实例以获得更好的性能:
private static readonly Regex s_MyRegexPatternThingy = new Regex("^\[.+\]$");
bool match = s_MyRegexPatternThingy.IsMatch(input);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
56146 次 |
最近记录: |