我编写了下面的代码来遍历Excel工作表中的C列到E列,从第2行检索正则表达式,并尝试在A列的每个文本字符串(tempText)中查找匹配项。如果找到匹配项,它将在其他工作表的特定单元格中记录匹配项,并将匹配的表达式替换为第1行中的相应值。因此,根据下图,B列将包含内容
B2 -市中心之间!购物中心
B3 -国王大道之间#
B4 -简站之间!公园
enter image description here
问题:替换没有发生,似乎javascript无法识别正则表达式。我不知道如何可以重写这是我的代码
var z = 1;
for (let h = 3; h <= 5; h++) {
const RegXX = activeWorksheet.getRow(2).getCell(h).value;
const regex = new RegExp(RegXX, 'gi');
const match = tempText.match(regex);
if (match) {
var row3 = extracts2Worksheet.getRow(2);
row3.getCell(z).value = match[0];
//row3.getCell(z).value = txt_extracts[j];
// write the match to the "Extracts-2" worksheet
tempText = tempText.replace(regex, activeWorksheet.getRow(1).getCell(h).value);
z++;
row3.commit();
activeWorksheet.getRow(i).getCell(1).value = tempText;
}
}
我试过用不同的方法写正则表达式,但似乎都不起作用。
1条答案
按热度按时间rn0zuynd1#
不要在电子表格中的正则表达式中使用双反斜杠; Excel单元格不是JavaScript字符串文字。在正则表达式中,表示数字的方式是
\d
,带有一个反斜杠;你只需要 type 它为\\d
,如果你把它放在JavaScript代码中的文字中: