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

Nik*_*ike 4 c# regex

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

Mar*_*ers 5

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

  • 字符类范围用-,而不是...
  • 单元格地址可以包含数字0,而不是第一个数字.
  • 贪婪的默认值就是你想要的.您的懒惰匹配将从最后丢失数字.

试试这个:

"[A-Z]+[1-9][0-9]*"
Run Code Online (Sandbox Code Playgroud)

例:

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

输出:

A1
B3
AB28
Run Code Online (Sandbox Code Playgroud)