RegEx以[并以]结尾

KBB*_*ite 14 c# regex

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

mar*_*cog 25

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

\[.*?\]
Run Code Online (Sandbox Code Playgroud)

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


Tim*_*ker 9

^\[.*\]$
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)


the*_*oop 7

这应该工作:

^\[.+\]$
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)