正则表达式之间的任何东西[]

Ank*_*kit 8 regex asp.net

我需要找到[]的正则表达式

例如,如果字符串是 - Hi [Stack],这是我需要[Find]的[Tag].

它应该返回Stack,Tag,Find

Joh*_*ica 31

非常简单,你只需要(1)用反斜杠转义括号,(2)(.*?)用来捕捉内容.

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

括号是一个捕获组,它们捕获它们的内容供以后使用.之后的问号.*使得匹配非贪婪.这意味着它将匹配可能的最短匹配,而不是最长的匹配.当你在一行中有多个匹配时,会出现贪婪和非贪婪之间的区别:

Hi [Stack], Here is my [Tag] which i need to [Find].
   ^______________________________________________^
Run Code Online (Sandbox Code Playgroud)

贪婪的匹配将在两组方括号之间找到最长的字符串.那是不对的.非贪婪的比赛会找到最短的:

Hi [Stack], Here is my [Tag] which i need to [Find].
   ^_____^
Run Code Online (Sandbox Code Playgroud)

无论如何,代码最终看起来像:

string regex = @"\[(.*?)\]";
string text  = "Hi [Stack], Here is my [Tag] which i need to [Find].";

foreach (Match match in Regex.Matches(text, regex))
{
    Console.WriteLine("Found {0}", match.Groups[1].Value);
}
Run Code Online (Sandbox Code Playgroud)