C# 如何使用带有[i]的正则表达式解析字符串

C# 如何使用带有[i]的正则表达式解析字符串,c#,regex,C#,Regex,我有这样的表情 R403[i] == 3 and R404[i] == 2 AND R405[i] == 1 and R403[i+1] == 5 and R404[i+1] == 2 AND R405[i+1] == 1 R231[2] 我想用这个正则表达式得到我表达式的所有结果 [R|M|B].*?\] 但我想再次应用的一个条件是,它必须包含变量I,这样R121[1]就不会被捕获 有人可以帮忙吗?如果我正确理解了你的问题,这将是正则表达式: Regex reg = new Regex(

我有这样的表情

 R403[i] == 3 and R404[i] == 2 AND R405[i] == 1 and R403[i+1] == 5 and R404[i+1] == 2 AND R405[i+1] == 1 R231[2]
我想用这个正则表达式得到我表达式的所有结果

[R|M|B].*?\]
但我想再次应用的一个条件是,它必须包含变量
I
,这样
R121[1]
就不会被捕获


有人可以帮忙吗?

如果我正确理解了你的问题,这将是正则表达式:

Regex reg = new Regex(@"[RMB]\d{3}\[.*?i.*?\]");
如果您的“i”less表达式可以出现在带有i use的表达式之前:

Regex reg = new Regex(@"[RMB]\d{3}\[[^]]*?i[^]]*?\]");

试试这个解决方案。它将检查模式的组匹配

 string pattern = @"[RMB]\d{3}\[\d*\]";
 string input = " M403[50] == 3 and R404[i] == 2 AND R405[i] == 1 and R403[i+1] == 5 and R404[i+1] == 2 AND R405[i+1] == 1 R231[2]";

 foreach (Match match in matches)
 {
      Console.WriteLine("Mactch:        {0}", match.Value);
      Console.WriteLine();
  }

提示
[R | M | B]
[BMR |]
相同。了解工作原理。谢谢。。你能给我解释一下
\[.*i.*.\]
我仍然对这个regexsimple感到困惑:方括号在某个点上必须包含一个i.*?表示允许使用所有字符或不允许使用任何字符,但应尽可能少。这应与R333[1+i]以及R344[i+1]和R333[i]匹配。这是一种特殊情况,因为它位于*之后。请参阅下面的解释添加了更好的正则表达式,这样顺序就不重要了。[R | M | B]将把|捕获为一个文字。他想要的是所有包含我的东西,而不是那些没有的