自定义函数JSAMATCHALL,单元格中使用正则搜索,包括捕获组
function Workbook_Open(){
//有3种方法运行此宏:
//1.文件-选项-信任中心-勾选“启用宏后自动添加为受信任的文档”。打开此工作簿,启用宏。今后打开此工作簿此宏会自动运行。
//2.Alt+F8,运行一次Workbook_Open宏。
//3.加载宏
//(1)存为.xlam文件;
//(2)开发工具-加载项-浏览-找到文件-打开-选中-确定。删除加载项方法为,改名称或位置-WPS调用失败出现删除提示-确定。
{ //功能区。
}
{ //“宏选项”对话框、“插入函数”对话框。
Application.MacroOptions("JSAMATCHALL","检索字符串与正则表达式进行匹配的所有结果(包括捕获组)。",undefined,undefined,undefined,undefined,14,undefined,undefined,undefined,['要在其中搜索的字符串。\n可以是数字、字符串、数组、单元格区域。数组元素之间、单元格之间自动添加英文,号。','正则表达式。\n可以是正则表达式字符串、单个单元格。必须设置全局 g 标志。"号应写为""。'])
}
}
function JSAMATCHALL(str,regstr){
//str:要在其中搜索的字符串。
//可以是数字、字符串、数组、单元格区域。数组元素之间、单元格之间自动添加英文,号。
//regstr:正则表达式。
//可以是正则表达式字符串、单个单元格。必须设置全局 g 标志。"号应写为""。
var str = str.valueOf().toString();
var regstr = regstr.valueOf().toString();
var pattern = regstr.slice(1,regstr.lastIndexOf("/"));
var attributes = regstr.slice(regstr.lastIndexOf("/")+1);
var reg = new RegExp(pattern,attributes);
if(!reg.global){
MsgBox("必须设置全局 g 标志");
}else{
return [...str.matchAll(reg)];
}
}