C# 正则表达式以查找字符串中的所有单元格地址

C# 正则表达式以查找字符串中的所有单元格地址,c#,regex,C#,Regex,我有一个字符串,可能包含单元格地址,如下所示: A1、B34、Z728-仅大写字母和 AA3、ABA92、ZABC83-整数前可能有几个字母 典型的源字符串如下所示: =3+7*A1-B3*AB28 我需要获取字符串中所有单元格的集合:A1、B3、AB28 我尝试将Regex.Matches方法与以下正则表达式一起使用:@“[A..Z]+?[1..9]+?”,但它不起作用。 有人能帮我写正则表达式吗?您的正则表达式中有三个错误: 字符类范围是用-指定的,而不是。 单元格地址可以包含数字0,但不

我有一个字符串,可能包含单元格地址,如下所示:
A1、B34、Z728-仅大写字母和
AA3、ABA92、ZABC83-整数前可能有几个字母
典型的源字符串如下所示:
=3+7*A1-B3*AB28
我需要获取字符串中所有单元格的集合:A1、B3、AB28
我尝试将Regex.Matches方法与以下正则表达式一起使用:@“[A..Z]+?[1..9]+?”,但它不起作用。
有人能帮我写正则表达式吗?

您的正则表达式中有三个错误:

  • 字符类范围是用
    -
    指定的,而不是
  • 单元格地址可以包含数字0,但不能作为第一个数字
  • 贪婪的默认值是您想要的。您的惰性匹配将从结尾处丢失数字
试试这个:

"[A-Z]+[1-9][0-9]*"
例如:

    string input = "3+7*A1-B3*AB28";
    foreach (Match match in Regex.Matches(input, "[A-Z]+[1-9][0-9]*"))
        Console.WriteLine(match.Value);
输出:

A1
B3
AB28