Regex将excel公式替换为工作表名称
Regex to replace excel formula with sheet name
嗨,我试图写一个正则表达式,以取代在代替表名别名excel公式中的单元格名称的发生。我使用Js XLS解析excel。例:
+AA74/AVERAGE('b'!Z40:AA40)
输出要求
+a_AA74/AVERAGE(b_Z40:b_AA40)
电流输出
+a_AA74/AVERAGE(b_Z40:a_AA40)
,其中'a'为当前编写公式的工作表,'b'为其他工作表的名称。我想在每个单元格名称之前附加工作表名称。但在这种类型的公式范围公式应包含起始范围表名称。
我正在使用的当前代码
var re = new RegExp("A.","g");
res = res.replace(re, "a_");
var re = new RegExp("A!","g");
res = res.replace(re, "a_");
var re = new RegExp("'B'!","g");
res = res.replace(re, "b_");
var re = new RegExp("'B'.","g");
res = res.replace(re, "b_");
res = res.replace(/'s/g,"");
res = res.replace(/(^|[^_A-Z])([A-Z]+'d+)/g, "$1"+'a_'+"$2");
您可以使用
var re = /^'+A!?|'b'!([A-Z]+'d+):([A-Z]+'d+)/g;
var s = "+AA74/AVERAGE('b'!Z40:AA40)";
var res = s.replace(re, function(m, g1, g2) {
if (g1) {
return 'b_'+g1 + ":b_" + g2;
} else return '+a_A';
});
console.log(res);
^'+A!?|'b'!([A-Z]+'d+):([A-Z]+'d+)
正则表达式匹配:
- 字符串 开头的
-
|
-或 -
'b'!
-一个字符序列 -
([A-Z]+'d+)
-第1组捕获1+大写ASCII字符后面跟着1+数字 -
:
- a冒号 -
([A-Z]+'d+)
-第2组捕获1+大写ASCII字符后面跟着1+数字
^'+A!?
- +A
或+A!
在替换中,我们检查组1是否匹配(=参与了匹配)。如果是,我们将b_
添加到捕获的内容中,如果不是,我们将a_
添加到A
中。
相关文章:
- 要替换的Javascript Regex无法按预期工作
- 为什么这个脚本只工作一次?只替换元素一次,然后再也不替换
- 替换匹配函数给出了未定义的错误,但它与替换一起工作
- 在表单提交将DOM的一部分替换为分部之后,我应该将ajax成功绑定到什么来使我的javascript工作
- 字符串替换不'当通过android webView JavascriptInterface传递字符串时无法工作
- 立即工作并将所有英文数字替换为阿拉伯数字的函数
- 全局替换不起作用,但简单的替换工作正常
- JavaScript中的字符串替换无法正常工作
- 如何使替换代码工作
- 正则表达式替换为多个通配符在 PHP 中工作,而不是在 JavaScript 中
- 替换仅工作一次
- 似乎无法获得示例代码来替换复选框工作
- Javascript替换在控制台中工作,而不是在代码中
- Java脚本:替换未按预期工作的函数
- 简化工作函数以替换特定单词
- 确认不工作时替换上载的文档
- 这个RegEx和替换在JavaScript中究竟是如何工作的
- Jquery换行符替换为br标签不工作
- Javascript替换-不与html字符串工作
- 替换按钮不能工作