从C#中的字符串中获取@*@等所有单词的最佳方法

Jom*_*Jom 0 .net c# regex linq string

我有一个字符串,如"@ 1234 @ == val1 && @ 2312 @!= val2".我希望得到1234和2312,它们使用'@'嵌入到一个数组中.该字符串可以包含使用"@"嵌入的多个项目.

update:将只包含'@'之间的整数值.

update2:可能出现的有效输入字符串是"@some int value @ == val1"或类似的以"&&"或"||"分隔的字符串 示例输入字符串:

              "@234@ == val1",
              "@3456@ == 345 && @34563@ != 'Y'",
              "@1234@ != val1 || @1234@ != val2 || @1234@ != val3"      
Run Code Online (Sandbox Code Playgroud)

实现这一目标的最佳方法是什么?

Hab*_*are 5

尝试:(包括签名值)

//string patt = "@(?<value>.*?)@";
// string patt = "@(?<value>\\d*?)@";  //  just number values (if there should be an integer use + instead of *)

//string patt = "@(?<value>[+|-]?\\d*?)@";
//string str = "@1234@ == val1 && @-2312@ != val2 && @+23@ != val3";


string patt = "@(?<value>[+|-]?\\d+?)@\\s[==|!=].*?(&&|\\|\\||$){1}";
string str = "@1234@ == val1 && @-2312@ != val2 && @+78@ != val3 || @45@ == 446";

Regex r = new Regex(patt);

string str = "@1234@ == val1 && @2312@ != val2";
MatchCollection  mc = r.Matches(str);

List<string> lst = new List<string>();
foreach (Match item in mc)
{
  string value = item.Groups["value"].Value;
  lst.Add(value);
}
Run Code Online (Sandbox Code Playgroud)