是否有任何正则表达式模式来匹配 Excel 工作表名称和地址(即单元格引用)

2 regex c#-3.0

一些有效的工作表名称如下所示

t'#3cfbsdjfdsjb''''''''^^^^^^&&'!$C$8:$N$23   

1'!$E$13:$H$19    

!'!$B$7:$E$16    

@@@@@@@'!$B$7:$K$21

!$'!$B$12:$M$17
Run Code Online (Sandbox Code Playgroud)

我在用

string pattern =@"[^<]+?\!\$[A-Z]+\$[0-9]+"

Regex r = new Regex(Constants.CELL_REFERENCE_PATTERN);
            Match m = r.Match(selectedVal);
            if (m.Success) return true;
            else return false;
Run Code Online (Sandbox Code Playgroud)

但它失败了

“t'#3cfbsdjfdsjb''''''''^^^^^^&&'!$C$8:$N$23,p,mv”或“sheet1!$A1”。

提前致谢

srb*_*rbs 5

忽略 C# 因素,这些是我发现有效的正则表达式。

带有可选工作表的单元格引用 (<sheet>!<cell>)

"(('[^/\\?*\[\]]{1,31}'|[A-Za-z0-9_]{1,31})!)?((\$?[A-Za-z]{1,3})(\$?[0-9]{1,6}))"
Run Code Online (Sandbox Code Playgroud)

笔记:

  • 此正则表达式不验证单元格值,例如。ZZZ999999通过正则表达式有效,但它不是 Excel 内部的有效位置。
  • 这是针对 Excel 2007+ 的。对于 2007 年之前的版本,更改{1,3}{1,2}和。这是因为单元格范围从(2007 年之前)变为(2007 年以上)。但当然,没有验证,从技术上讲它可能是和。{1,6}{1,5}IV65536XFD1048576[A-Za-z]+[0-9]+